基于Docker-compose的禅道部署实践:自建MySQL与Redis集成及故障排查指南
禅道镜像版本:easysoft/zentao:21.4
Redis版本:redis:6.2.0
Mysql版本:mysql:8.0.35
文章目录
-
**基于Docker-compose的禅道部署实践:自建MySQL与Redis集成及故障排查指南** - 一.环境准备
- 二.编写部署文件
- 三.网页初始化以及可能遇到的问题
- 四.遇到的问题以及解决方法
- 1.问题描述
- 2.解决办法和问题原因
一.环境准备
#检查是否安装docker-compose
docker-compose --version
#如果没安装则可以执行以下命令安装
wget -O /usr/local/bin/docker-compose https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64
chmod +x /usr/local/bin/docker-compose
#新建挂载目录
mkdir -p /home/zentao
cd /home/zentao
二.编写部署文件
官方的Yml
文件地址如下:go-zentao/hack/docker-compose-cache.yml at master · easysoft/go-zentao
因为此次部署是在已有Mysq
l和Redis
的情况下搭建,所以修改为以下内容:
services:
# zentao servicezentao:image: easysoft/zentao:21.4container_name: zentaopull_policy: alwaysrestart: alwaysports:- '19080:80'volumes:- '/home/zentao/data:/data'environment:- ZT_MYSQL_HOST=<your mysql ip>- ZT_MYSQL_PORT=3306- ZT_MYSQL_USER=root- ZT_MYSQL_PASSWORD=<your mysql pass>- ZT_MYSQL_DB=paco_zentao #数据库名字随意写- ZT_REDIS_HOST=<your redis ip>- ZT_REDIS_PORT=6379- ZT_REDIS_PASSWORD=<your redis pass>- ZT_REDIS_SERIALIZER=igbinary- ZT_CACHE_ENABLE=true- ZT_CACHE_TYPE=redis- ZT_CACHE_SCOPE=private- ZT_CACHE_LIFETIME=0- ZT_REDIS_DATABASE=1- PHP_MAX_EXECUTION_TIME=120- PHP_MEMORY_LIMIT=512M- PHP_POST_MAX_SIZE=128M- PHP_UPLOAD_MAX_FILESIZE=128Mnetworks:- zentao-net
networks:zentao-net:driver: bridge
鉴于大部分人无法拉取到docker hub
的镜像,此处有两个方法解决:
1.替换Zentao自己的国内镜像源
# 国内镜像 # image: hub.zentao.net/app/zentao
2.自己搭建一个私有仓库,然后同步到自己的仓库去
参考教程:阿里云容器镜像服务搭一个自己的镜像仓库_aliyun仓库怎么容器镜像-CSDN博客
准备好yml
之后就可以运行容器:
#确保yml在/home/zentao目录下
docker-compose up -d
执行成功后如上图所示等待输出,服务已启动完成, 请使用浏览器访问设置的域名或ip:port, 继续完成后续安装向导这段话后。就可以通过IP+19080
端口访问禅道了。
然后我们在网页上进行初始化操作。
三.网页初始化以及可能遇到的问题
访问网页后就会看见如下界面。点击开始安装然后一直下一步。
直到这个页面,确认检查全部通过,然后下一步。
然后确认这个页面的信息是你配置的docker-compose
文件中的数据库信息,这一步如果数据库是已经安装过一次了,就必须勾选清空现有数据选项。
然后会继续安装数据库表
正常流程,在数据库安装完成后,点下一步,会直接生成配置文件并保存。如图:
然后设置账号:
然后点击登录:
然后我们在后台,系统设置中的缓存里,点击Redis
配置,就能看到已经自动填上了Redis
的信息,就部署完成了。
四.遇到的问题以及解决方法
1.问题描述
在网页初始化时,数据库安装完成后,点下一步,正常步骤,会直接生成配置文件并保存。但是我在第一次安装的时候,点击下一步,出现如下情况,提示还没有生成配置文件。
2.解决办法和问题原因
在与官方工作人员确定之后,发现出现问题的原因是,我在部署的时候,Redis
的密码有特殊字符,导致部署时无法连接上Redis
。禅道系统就无法生成session
。最后导致生成不了配置文件,我部署的Yml
如下:
services:
# zentao servicezentao:image: easysoft/zentao:21.4container_name: zentaopull_policy: alwaysrestart: alwaysports:- '19080:80'volumes:- '/home/zentao/data:/data'environment:- ZT_MYSQL_HOST=<your mysql ip>- ZT_MYSQL_PORT=3306- ZT_MYSQL_USER=root- ZT_MYSQL_PASSWORD=<your mysql pass>- ZT_MYSQL_DB=paco_zentao #数据库名字随意写- ZT_REDIS_HOST=<your redis ip>- ZT_REDIS_PORT=6379- ZT_REDIS_PASSWORD=RBzT,v2y56- ZT_REDIS_SERIALIZER=igbinary- ZT_CACHE_ENABLE=true- ZT_CACHE_TYPE=redis- ZT_CACHE_SCOPE=private- ZT_CACHE_LIFETIME=0- ZT_REDIS_DATABASE=1- PHP_MAX_EXECUTION_TIME=120- PHP_MEMORY_LIMIT=512M- PHP_POST_MAX_SIZE=128M- PHP_UPLOAD_MAX_FILESIZE=128Mnetworks:- zentao-net
networks:zentao-net:driver: bridge
可以看到RBzT,v2y56
有特殊字符,
,但是碍于环境限制,没法修改Redis
密码,所以只能去掉docker-compose.yml
中Redis
的相关配置,在部署好之后,于网页中自行配置Redis
,yml
如下:
services:
# zentao servicezentao:image: registry.cn-hangzhou.aliyuncs.com/docker_image-ljx/zentao:21.4container_name: zentaopull_policy: alwaysrestart: alwaysports:- '19080:80'volumes:- '/home/zentao/data:/data'environment:- ZT_MYSQL_HOST=<your mysql ip>- ZT_MYSQL_PORT=13306- ZT_MYSQL_USER=root- ZT_MYSQL_PASSWORD=<your mysql pass>- ZT_MYSQL_DB=paco_zentao- PHP_MAX_EXECUTION_TIME=120- PHP_MEMORY_LIMIT=512M- PHP_POST_MAX_SIZE=128M- PHP_UPLOAD_MAX_FILESIZE=128Mnetworks:- zentao-net
networks:zentao-net:driver: bridge
配置Redis的界面还是在这个地方自行配置,效果是一样的:
这个问题,工作人员说会在后续的镜像中修复。