禅道12.0迁移并使用docker部署
禅道12.0迁移并使用docker部署
背景
有一套禅道12.0由其他运维,由于组织关系变更需要迁移,但是找不到原来的安装包,查看官方网站,最早只有18.0版本的安装包可以下载,通过DockerHub寻找docker镜像,也没有12.0,最早的只有12.2.stable,但好在是一个大版本,迁移时同时升级应该没有什么大问题。
容器部署
先启动12.2.stable,查看entrypoint脚本,确定禅道的目录为/app/zentaopms,使用apache2作为web服务器,内置MySQL为默认安装,确定需要映射的目录为
/app/zentaopms、/var/log/apache2、/var/log/mysql、/var/lib/mysql
编写compose文件
version: '3.9'
services:
easysoft:
image: 'nexus.scgsdsj.com/easysoft/zentao:12.2.stable'
environment:
- MYSQL_INTERNAL=true
volumes:
- '/stash/zentao/data:/app/zentaopms'
- '/stash/zentao/logs:/var/log/apache2'
- '/stash/zentao/mysql/logs:/var/log/mysql'
- '/stash/zentao/mysql/data:/var/lib/mysql'
- ''
ports:
- '8080:80'
container_name: zentao
启动容器,访问8080端口并完成初始化
备份老版数据
备份方法:使用管理员账号登录,后台=>数据=>备份;若没有管理员账号,也可以通过文件和MySQL命令进行备份。
备份数据一般如下
若没有前两个,可能是设置了不备份代码和附件,修改设置重新备份,或者到数据目录的tmp下手动获取。
恢复数据并升级
复制备份数据到映射目录
## 以下都在宿主机执行
## 1、复制附件
cp -r 202502260030481.file/upload/1/ /stash/zentao/data/www/data/upload/
## 2、恢复数据库
# 删除备份文件的第一行
sed -i '1d' 202502260030481.sql.php
# 将SQL中不符合时间规范的字段替换为 1970-01-01
sed -i 's/0000-00-00/1970-01-01/g' 202502260030481.sql.php
# 修改文件名
mv 202502260030481.sql.php 202502260030481.sql
# 导入数据,宿主机执行
docker exec -i zentao mysql -uroot -h127.0.0.1 -P3306 -p123456 zentao < 202502260030481.sql
## 3、复制升级文件
docker exec zentao cp /var/www/zentaopms/www/upgrade.php /app/zentaopms/www/
访问 http://your-ip:8080/upgrade.php 按指示升级即可
解决时间问题
尝试增加环境变量TZ=Asia/Shanghai
来修改时区,然而该镜像不支持,所以只有通过挂载文件了
准备两个文件
echo "Asia/Shanghai" >> /stash/zentao/timezone
docker cp zentao:/usr/share/zoneinfo/PRC /stash/zentao/zoneinfo-PRC
修改compose文件
version: '3.9'
services:
easysoft:
image: 'nexus.scgsdsj.com/easysoft/zentao:12.2.stable'
environment:
- MYSQL_INTERNAL=true
volumes:
- '/stash/zentao/data:/app/zentaopms'
- '/stash/zentao/logs:/var/log/apache2'
- '/stash/zentao/mysql/logs:/var/log/mysql'
- '/stash/zentao/mysql/data:/var/lib/mysql'
- '/stash/zentao/timezone:/etc/timezone'
- '/stash/zentao/zoneinfo-PRC:/etc/localtime'
ports:
- '8080:80'
container_name: zentao
重新创建容器并启动
docker compose down
docker compose up -d
License:
CC BY 4.0