禅道(ZenTao)Docker Compose 搭建与内网离线部署手册
一、安装准备
1.1 创建本地目录结构
在当前目录(如 /zentao)下创建以下结构,挂载数据防止丢失:
mkdir -p ./mariadb
mkdir -p ./zentao
1.2 编写 docker-compose.yml
使用官方 Bitnami 镜像组合服务:
version: '3.8'
services:
zentao-db:
image: bitnami/mariadb:10.6
container_name: zentao–db
restart: always
volumes:
– ./mariadb:/bitnami/mariadb
networks:
– zentao–net
environment:
– MARIADB_ROOT_PASSWORD=pass4Zentao
– MARIADB_DATABASE=zentao
– MARIADB_USER=my_user
– MARIADB_PASSWORD=my_password
– MARIADB_CHARACTER_SET=utf8mb4
– MARIADB_COLLATE=utf8mb4_unicode_ci
healthcheck:
test: ["CMD", "/opt/bitnami/scripts/mariadb/healthcheck.sh"]
interval: 15s
timeout: 5s
retries: 6
zentao-cache:
image: bitnami/redis:6.2
container_name: zentao–cache
restart: always
environment:
– REDIS_PASSWORD=pass4Zentao
volumes:
– ./redis:/bitnami/redis/data
networks:
– zentao–net
zentao:
image: easysoft/zentao:latest
container_name: zentao
restart: always
ports:
– '9527:80'
volumes:
– ./zentao:/data
– ./zentao/sess:/tmp/sess
depends_on:
– zentao–db
– zentao–cache
environment:
– ZT_MYSQL_HOST=zentao–db
– ZT_MYSQL_PORT=3306
– ZT_MYSQL_USER=my_user
– ZT_MYSQL_PASSWORD=my_password
– ZT_MYSQL_DB=zentao
– ZT_REDIS_HOST=zentao–cache
– ZT_REDIS_PORT=6379
– ZT_REDIS_PASSWORD=pass4Zentao
– ZT_REDIS_SERIALIZER=igbinary
– ZT_CACHE_ENABLE=true
– ZT_CACHE_TYPE=redis
– ZT_CACHE_SCOPE=private
– ZT_CACHE_LIFETIME=0
– PHP_SESSION_TYPE=redis
– PHP_SESSION_PATH=tcp://zentao–cache:6379?auth=pass4Zentao
– PHP_EXT_REDIS=true
– PHP_SESSION_REDIS_DATABASE=6
– PHP_MAX_EXECUTION_TIME=120
– PHP_MEMORY_LIMIT=512M
– PHP_POST_MAX_SIZE=128M
– PHP_UPLOAD_MAX_FILESIZE=128M
networks:
– zentao–net
networks:
zentao-net:
driver: bridge
启动:
docker-compose up -d
权限建议(防止禅道、数据库无权限写入)
sudo chown -R 1001:1001 ./mariadb
sudo chown -R 1001:1001 ./redis
sudo chown -R 33:33 ./zentao
二、初始化配置
访问浏览器:http://<服务器IP>:9527
按界面提示完成:
-
设置数据库连接:
- 服务器地址:zentao-db
- 用户名:my_user
- 密码:my_password
- 数据库名:zentao
-
设置管理员账户和密码
三、配置保存路径
配置将保存至:
/apps/zentao/config/my.php
示例内容:
$config->installed = true;
$config->debug = false;
$config->requestType = 'GET';
$config->timezone = 'Asia/Shanghai';
$config->db->driver = 'mysql';
$config->db->host = 'zentao-db';
$config->db->port = '3306';
$config->db->name = 'zentao';
$config->db->user = 'my_user';
$config->db->encoding = 'utf8mb4';
$config->db->password = 'my_password';
$config->db->prefix = 'zt_';
$config->webRoot = getWebRoot();
$config->default->lang = 'zh-cn';
四、导入测试用例(CSV)
禅道支持 Excel(CSV 格式)导入测试用例。
4.1 CSV 模板字段:
- 所属模块
- 用例名称
- 前置条件
- 步骤
- 预期
- 关键词
- 优先级
- 用例类型
- 适用阶段
脚本输出文件可在禅道“测试用例”中选择“导入CSV”进行批量导入。
五、常见问题及解决方案
5.1 无法连接数据库
- 检查数据库服务是否正常运行
- 配置文件 my.php 是否填写正确(host 应为 zentao-db)
5.2 healthcheck.sh 脚本缺失
- Bitnami 镜像中 /opt/bitnami/scripts/mariadb/healthcheck.sh 用于健康检查
- 若未启用健康检查可忽略此错误
5.3 禅道页面提示 Session 目录不存在
mkdir -p /tmp/session
chmod -R 777 /tmp/session
或者修改 PHP 配置文件 php.ini 中的 session.save_path
六、离线部署建议
-
禅道镜像与依赖镜像提前下载保存:
docker pull easysoft/zentao
docker pull bitnami/mariadb:10.6
docker save -o zentao.tar easysoft/zentao
docker save -o mariadb.tar bitnami/mariadb:10.6 -
在内网环境中使用 docker load 加载镜像:
docker load -i zentao.tar
docker load -i mariadb.tar -
保留完整 docker-compose.yml 和配置文件,便于复现
评论前必须登录!
注册