1. 创建目录
# 创建持久化目录
mkdir -pv /data/zentao
# 创建docker-compose目录
mkdir -pv /data/docker-compose/zentao
2. 创建变量文件.env
cat > /data/docker-compose/zentao/.env << 'EOF'
# 版本号可以自己根据项目的版本修改
#Version=12.5.3
Version=18.10
TZ=Asia/Shanghai
# Compose
COMPOSE_PROJECT_NAME=zentao
COMPOSE_HTTP_TIMEOUT=3600
DOCKER_CLIENT_TIMEOUT=3600
DOCKER_SUBNET=172.16.240.0/24
# 持久化存储
VOLUME_DIR=/data/zentao
# MySQL: 填写你的 Mysql 服务器信息
DB_HOST=zentao_db
DB_PORT=3306
DB_ROOT_PASSWORD=Aa123456!
DB_USER=zentao
DB_PASSWORD=zentao
DB_NAME=zentao_config
# Redis: 填写你的 Redis 服务器信息(docker版本目前好像不支持redis设置密码)
REDIS_HOST=zentao_redis
REDIS_PORT=6379
#REDIS_PASSWORD=8URXPL2x3HZMi7xoGTdk3Upj
# Zentao
UI_PORT=8080
MAX_EXECUTION_TIME=300
POST_MAX_SIZE=512M
UPLOAD_MAX_FILESIZE=512M
EOF
3. 编辑docker-compose.yml文件
cat > /data/docker-compose/zentao/docker-compose.yml << 'EOF'
version: '3'
services:
zentao_db:
container_name: zentao_db
image: mysql:8.0
restart: always
# docker安全验证
security_opt:
- seccomp:unconfined
volumes:
- /etc/localtime:/etc/localtime
- $VOLUME_DIR/mysql:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_DATABASE: ${DB_NAME}
command: --character-set-server=utf8 --collation-server=utf8_general_ci --default-authentication-plugin=mysql_native_password --skip-name-resolve
deploy:
resources:
limits:
memory: 4G
networks:
- zentao
zentao_redis:
container_name: zentao_redis
image: redis:6.2.1
restart: always
#command: redis-server --requirepass $REDIS_PASSWORD --loglevel warning --maxmemory-policy allkeys-lru
command: redis-server --loglevel warning --maxmemory-policy allkeys-lru
environment:
REDIS_PORT: $REDIS_PORT
#REDIS_PASSWORD: $REDIS_PASSWORD
volumes:
- $VOLUME_DIR/redis:/data
healthcheck:
#test: "redis-cli -h 127.0.0.1 -p $$REDIS_PORT -a $$REDIS_PASSWORD info Replication"
test: "redis-cli -h 127.0.0.1 -p $$REDIS_PORT info Replication"
interval: 10s
timeout: 5s
retries: 3
start_period: 10s
deploy:
resources:
limits:
memory: 1G
networks:
- zentao
zentao:
container_name: zentao
depends_on:
- zentao_db
- zentao_redis
image: easysoft/zentao:${Version}
restart: always
ports:
- ${UI_PORT}:80
volumes:
# For version 12
#- $VOLUME_DIR/wwwroot:/www/zentaopms
# For version 18
- $VOLUME_DIR/wwwroot:/data/zentao
environment:
MYSQL_INTERNAL: false
ZT_MYSQL_HOST: ${DB_HOST}
ZT_MYSQL_PORT: ${DB_PORT}
ZT_MYSQL_USER: ${DB_USER}
ZT_MYSQL_PASSWORD: ${DB_PASSWORD}
ZT_MYSQL_DB: ${DB_NAME}
PHP_SESSION_TYPE: redis
PHP_SESSION_PATH: tcp://zentao_redis:6379
PHP_MAX_EXECUTION_TIME: ${MAX_EXECUTION_TIME}
PHP_POST_MAX_SIZE: ${POST_MAX_SIZE}
PHP_UPLOAD_MAX_FILESIZE: ${UPLOAD_MAX_FILESIZE}
healthcheck:
test: "curl -fsL http://localhost/ > /dev/null"
interval: 10s
timeout: 5s
retries: 3
start_period: 10s
deploy:
resources:
limits:
memory: 4G
networks:
- zentao
networks:
zentao:
driver: bridge
EOF
4. 启动&&安装
web页面安装
# 启动
docker-compose up -d
# 浏览器访问并安装
http://IP:8080
- 按提示下一步
- 连接数据库时填入预置信息(版本自己填写, 新版本会自动导入),如下
数据库服务器: zentao_db
服务器端口: 3306
数据库用户名: zentao
数据库密码: zentao
PMS使用的库: zentao_config
- 继续按提示完成安装即可
5. 关于迁移 && 升级
Docker部署禅道, 迁移并升级(跨多个版本, 数据库结构有变化)思路:
以12.5.3迁移并升级18.10为例:
1. 禅道同版本迁移:
- 先部署同版本禅道到新节点, 并进行数据迁移
- 旧节点: 后台->系统设置->备份->拷贝备份文件至新节点backup目录
- 新节点: 后台->系统设置->备份->找到备份文件进行恢复
2. 禅道升级:
- 修改docker-compose配置
- 1. 版本修改, 将老版本号修改为新版本号
- 2. 持久化目录修改, 将/www/zentaopms修改为/data/zentao
- 3. 重建容器并登录后台, 禅道会自动检测版本信息, 并提示升级相关选项, 更具引导进行升级即可