禅道12.0迁移并使用docker部署

背景

有一套禅道12.0由其他团队运维,由于组织关系变更需要迁移,但是找不到原来的安装包,查看官方网站,最早只有18.0版本的安装包可以下载,通过DockerHub寻找docker镜像,也没有12.0,最早的只有12.2.stable,但好在是一个大版本,迁移时同时升级应该没有什么大问题。

容器部署

先启动12.2.stable,查看entrypoint脚本,确定禅道的目录为/app/zentaopms,使用apache2作为web服务器,内置MySQL为默认安装,确定需要映射的目录为

/app、/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命令进行备份。

备份数据一般如下

目录说明
202502260030481.code禅道的代码,正常不需要,有过自定义或者扩展插件的需要关注
202502260030481.file上传的附件
202502260030481.sql.php数据库导出(逻辑导出)

若没有前两个,可能是设置了不备份代码和附件,修改设置重新备份,或者到数据目录的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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值