Docker部署archery项目的注意事项

archery是什么?看看archery官网的介绍吧:https://archerydms.com/

是一个一站式的SQL审核平台,官网给的也有体验地址: https://demo.archerydms.com/login/

 账号:archer   密码:archer

这是一个开源项目,所以公司使用的话,可以自己私有化部署。部署教程在archery的官方github仓库的Wiki界面有介绍:home · hhyo/Archery Wiki · GitHub

开始使用docker部署:

首先需要在你的云服务器上安装docker和docker compose

安装docker

 curl -fsSL https://get.docker.com -o get-docker.sh | sudo sh

安装docker compose

 sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

或者也可以参考这一篇博客:CentOS7 - Docker&Docker-Compose安装-CSDN博客 

安装好docker之后,可以开始安装了,这里注意,第一个坑点来了

archery是一个python项目,注意在使用docker compose命令来执行docker-compose.yml配置文件安装镜像及启动容器时候,要按照Releases · hhyo/Archery · GitHub

官方仓库的release版本中的源码下载后,执行里边的docker-compose.yml,我第一次安装的时候是按照release中的source code(推荐下载Release v1.10.0),本地拉取代码进行二次开发建议拉取到4月12号的那一次提交,因为我上次就是4月中旬拉取的代码,各种报错问题我已经解决了;可参考我的这篇博客:Django项目无法安装python-ldap依赖解决方案_python-ldap安装失败-CSDN博客

就可以保证项目在本地可以正常启动,而我最近将代码更新到最新的时候,再次启动,又会提示各种依赖无法下载以及其他各种报错,所以我又reset到了没更新之前的那次提交,就可以正常本地启动项目了 

下载到windows本地解压,上传到云服务器上,执行的时候不会报yml格式错误,但是后来我买的云服务器过期了,资源回收了,最近又要安装的时候,我直接把我本地的通过git clone拉下来的代码,上传到云服务器上,执行里边的docker-compose.yml,就会提示depends_on应该是一个数组

 然后把这里边的配置粘贴到在线 yml格式验证网站也提示没有语法错误

然后又把release版本的source code下载后,进行对比,发现release版本的docker-compose.yml和直接拉取的代码的docker-compose.yml文件内容确实不一样

这个是release版本中的docker-compose.yml文件

把release项目文件上传到云服务后,就可以切换到docker-compose.yml所在的目录(项目所在目下的src/docekr-compose/)

 然后执行命令

docker compose -f docker-compose.yml up -d

执行之后,就会提示错误

 

会提示拉取镜像失败,以及超时,这是因为默认的国外镜像访问不了了,此时需要配置国内的镜像源,网上很多网易的,还有一些大学的镜像也不太行,一些镜像也拉不了,可能是库不太全。找了很久,找到了一个比较全的镜像源的配置

vim /etc/docker/daemon.json 

在文件中添加:

"registry-mirrors": [
    "https://registry.docker-cn.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com",
    "https://hub.uuuadc.top",
    "https://docker.anyhub.us.kg",
    "https://dockerhub.jobcher.com",
    "https://dockerhub.icu",
    "https://docker.ckyl.me",
    "https://docker.awsl9527.cn",
    "https://mirror.baidubce.com"
  ]

 讲这些镜像都配置进去,然后重启一下docker

sudo systemctl daemon-reload
sudo systemctl restart docker
 

然后再次执行 docker compose -f docker-compose.yml up -d 就可以拉取成功镜像并自动创建4个容器启动这4个镜像了

然后开始初始化该项目的数据库表

#表结构初始化
docker exec -ti archery /bin/bash
cd /opt/archery
source /opt/venv4archery/bin/activate
python3 manage.py makemigrations sql  
python3 manage.py migrate

#数据初始化
python3 manage.py dbshell<sql/fixtures/auth_group.sql
python3 manage.py dbshell<src/init_sql/mysql_slow_query_review.sql

#创建管理用户
python3 manage.py createsuperuser

以及创建超级管理员

 

然后重启服务 

#重启服务 docker restart archery

 到云服务器控制台中的安全组策略中,将9123端口和3306端口放开,就可以在本机访问archery项目以及数据库了

 

账号和密码就是刚才设置的超级管理员

登录进去之后的界面

 

我们主要是为了用这个sql分析的功能来检查sql文件或者mybatis的mapper xml文件中的sql语句是否有语法错误或者性能问题。

 这里也有一个坑,如果直接上传sql文件或者mapper文件,分析也会报错

 查看docker日志:

#日志查看和问题排查
docker logs archery -f --tail=10

会看到错误提示:

 

就是提示需要一个路径,但是却是None.

这是因为没有配置soar执行程序的路径,这个项目中的sql分析依赖了一个soar的可执行程序。

soar是小米的一个go语言项目,编译之后是一个可执行的程序

 在系统的管理界面的系统管理-配置项管理里边配置上soar的路径(SOAR_PATH)即可

然后再次测试上传一个mapper xml文件就可以正常解析并输出分析报告了

 

 由于这个分析功能的接口需要供替他项目调用,所以还需要去掉archery项目中的身份认证的拦截功能,去掉数据库中的权限数据配置等。去除认证和授权的相关修改是涉及到代码修改,准备后边再开一篇博客来写修改情况!写完博客,准备放松一下,玩一下最近最火的游戏黑神话悟空

  • 26
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值