easysoft/zentao!GitHub Workflow Status (event) !Docker Pulls !Docker Image Size !GitHub tag
从 18.6 版本开始(企业版 8.6 ,旗舰版 4.6),我们重新调整了docker镜像的结构,如果您从其他的版本升级到 18.6 之后的版本,请务必参考【 旧版Docker镜像升级说明】,全新安装不受影响。
禅道是一款开源的全生命周期项目管理软件,基于敏捷和CMMI管理理念进行设计,集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体,完整地覆盖了项目管理的核心流程。
禅和道是中国文化中极具代表意义的两个字,是中国传统文化的结晶。我们之所以选用“禅道”作为我们软件的名字,是希望通过这两个字来传达我们对管理的理解和思考。我们希望通过禅道来进行的管理,可以摒弃繁文缛节,还原管理的本质!
!screenshots
ZenTao官网:[***]
由于版本比较多,这里只列出最新的5个版本,更详细的版本列表请参考:可用版本列表
镜像地址:
hub.zentao.net/app/zentao(mirror镜像)
easysoft/zentao
开源版
latest, 18.6, 18.6-2023083118.5, 18.5-2023071318.4, 18.4-2023062518.3-2023042418.2-2023031518.1-20230216企业版
biz8.6, biz8.6-20230831biz8.6.k8s, biz8.6.k8s-20230831biz8.5, biz8.5-20230713biz8.5.k8s, biz8.5.k8s-20230713biz8.4, biz8.4-20230625biz8.4.k8s, biz8.4.k8s-20230625biz8.3-20230424biz8.3.k8s-20230424biz8.2-20230315biz8.2.k8s-20230315旗舰版
max4.6, max4.6-20230831max4.6.k8s, max4.6.k8s-20230831max4.5, max4.5-20230713max4.5.k8s, max4.5.k8s-20230713max4.4, max4.4-20230625max4.4.k8s, max4.4.k8s-20230625max4.3-20230424max4.3.k8s-20230424max4.2-20230315max4.2.k8s-20230315IPD版本
ipd1.1, ipd1.0.1-20230831ipd1.0, ipd1.0-20230802ipd1.0.beta1-20230522迅捷版
lite1.2-20221205迅捷企业版
litevip1.2-20221205推荐从 Docker Hub Registry 拉取我们构建好的官方Docker镜像。
bashdocker pull hub.zentao.net/app/zentao:latest
如需使用指定的版本,可以拉取一个包含版本标签的镜像,在Docker Hub仓库中查看 可用版本列表
bashdocker pull hub.zentao.net/app/zentao:[TAG]
禅道容器镜像做了特殊处理,将所有需要持久化的数据都保存到了 /data 目录,因此,运行禅道容器镜像,您只需要将持久化目录挂载到容器的 /data 目录即可。
如果挂载的目录为空,首次启动会自动初始化相关文件
bashdocker run -it \ -v $PWD/data:/data \ -e MYSQL_INTERNAL=true \ hub.zentao.net/app/zentao:latest
执行上面的命令后,会启动禅道镜像,通过设置
MYSQL_INTERNAL=true会启动内置的MySQL服务。
连接到外部MySQL服务:
bashdocker run -it \ -v $PWD/data:/data \ -e MYSQL_INTERNAL=false \ -e ZT_MYSQL_HOST=<你的MySQL服务地址> \ -e ZT_MYSQL_PORT=<你的MySQL服务端口> \ -e ZT_MYSQL_USER=<你的MySQL服务用户名> \ -e ZT_MYSQL_PASSWORD=<你的MySQL服务密码> \ -e ZT_MYSQL_DB=<禅道数据库名> \ hub.zentao.net/app/zentao:latest
通过设置
MYSQL_INTERNAL=false,并且设置MySQL相关的环境变量,运行镜像后,可以连接到外部的MySQL
如果用dockoer-compose运行,可以参考 docker-compose.yml.example 文件:
yaml... # mysql service for zentao zentao-mysql: image: mysql:5.7 container_name: zentao-mysql ports: - '***:3306' volumes: - /data/zentao/db:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=pass4Zentao - ZT_MYSQL_DB=zentao networks: - zentao-net ...
| 变量名 | 默认值 | 说明 |
|---|---|---|
| DEBUG | false | 是否打开调试信息,默认关闭 |
| PHP_SESSION_TYPE | files | php session 类型,files | redis |
| PHP_SESSION_PATH | /data/php/session | php session 存储路径 |
| PHP_MAX_EXECUTION_TIME | 120 | 最大执行时间,单位秒,有助于防止有问题程序占尽服务器资源。默认120 |
| PHP_MEMORY_LIMIT | 256M | 单个php进程允许分配的最大内存 |
| PHP_POST_MAX_SIZE | 128M | 允许最大Post数据大小 |
| PHP_UPLOAD_MAX_FILESIZE | 128M | 单个文件上传的最大值 |
| MYSQL_INTERNAL | false | 使用内部的MySQL,默认关闭 |
| ZT_MYSQL_HOST | 127.0.0.1 | MySQL 主机地址 |
| ZT_MYSQL_PORT | 3306 | MySQL 端口 |
| ZT_MYSQL_DB | zentao | zentao数据库名称 |
| ZT_MYSQL_USER | root | MySQL用户名 |
| ZT_MYSQL_PASSWORD | pass4zenTao | MySQL密码 |
| LDAP_ENABLED | false | 是否启用LDAP |
| LDAP_HOST | 127.0.0.1 | LDAP服务主机地址 |
| LDAP_PORT | 389 | LDAP服务端口 |
| LDAP_BASEDN | dc=quickon,dc=org | LDAP BaseDN |
| LDAP_ADMINUSER | cn=admin,dc=quickon,dc=org | LDAP 管理员 |
| LDAP_BINDPASSWORD | pass4zenTao | LDAP Bind 密码 |
| LDAP_USERKEY | uid | LDAP 用户名称的字段名 |
| LDAP_EMAILKEY | LDAP 用户***的字段名 | |
| LDAP_GROUP | 1 | 默认用户组(1: 管理员, 2: 研发, 3: 测试, 类比) |
| LDAP_REALNAME | name | LDAP 用户真实姓名的字段名 |
| LDAP_REPEATPOLICY | number | LDAP 用户重名策略,number:数字后缀,dept:部门后缀 |
| LDAP_AUTOCREATE | 1 | LDAP 用户自动创建,1:自动创建,0:不自动创建 |
| SMTP_ENABLED | false | 启用SMTP |
| SMTP_FROMNAME | ZenTao $VERSION | SMTP发件人显示名称 |
| SMTP_HOST | 127.0.0.1 | SMTP 服务主机地址 |
| SMTP_PORT | 25 | SMTP 服务端口号 |
| SMTP_USER | *** | SMTP发件人***地址 |
| SMTP_PASS | pass4zenTao | SMTP发件人***密码 |
| LINK_GIT | false | DevOps模块,是否链接Git服务 |
| GIT_TYPE | gitea | 连接的git服务名称,目前支持 gitea/gogs/gitlab |
| GIT_INSTANCE_NAME | gitea | Git 服务名称 |
| GIT_USERNAME | root | Git 管理员账号名称,用于生成token |
| GIT_PASSWORD | pass4QuickOn | Git 管理员密码,用于生成token |
| GIT_PROTOCOL | https | Git 服务协议类型,http或https(废弃) |
| GIT_DOMAIN | [***] | Git 服务域名(完整域名包含协议头) |
| GIT_TOKEN | - | Git Token优先级高于用户名, 默认为空 |
| LINK_CI | false | DevOps模块,是否链接CI服务 |
| CI_TYPE | jenkins | 连接的ci服务名称,目前支持 jenkins |
| CI_USERNAME | root | CI 管理员账号名称,用于生成token |
| CI_PASSWORD | pass4QuickOn | CI 管理员密码,用于生成token |
| CI_PROTOCOL | https | CI 协议类型,http或https(废弃) |
| CI_URL | [***] | CI 服务域名(完整域名包含协议头) |
| CI_TOKEN | - | CI Token优先级高于用户名, 默认为空 |
| LINK_SCAN | false | DevOps模块,是否链接扫描服务 |
| SCAN_TYPE | sonarqube | 连接的扫描服务名称,目前支持 sonarqube |
| SCAN_USERNAME | admin | SCAN 管理员账号名称,用于生成token |
| SCAN_PASSWORD | pass4QuickOn | SCAN 管理员密码,用于生成token |
| SCAN_PROTOCOL | https | SCAN 协议类型,http或https(废弃) |
| SCAN_URL | [***] | SCAN 服务域名(完整域名包含协议头) |
| IS_CONTAINER | true | 是否在容器内运行,zentao更新时使用 |
通过设置 PHP_POST_MAX_SIZE 、PHP_UPLOAD_MAX_FILESIZE 这两个环境变量的值来调整最大上传文件的限制,另外,如果考虑到用户网速的因素,建议把PHP_MAX_EXECUTION_TIME 也加大一些,这样可以保证用户的文件可以上传完成。
示例:
bash# 运行mysql docker run -d --rm --name mysql -e MYSQL_ROOT_PASSWORD=pass4you mysql:5.7.38-debian # 运行禅道 docker run -d --rm --name zentao \ --link mysql \ --link redis \ -e ZT_MYSQL_HOST=mysql \ -e ZT_MYSQL_PORT=3306 \ -e ZT_MYSQL_USER=root \ -e ZT_MYSQL_PASSWORD=pass4you \ -e ZT_MYSQL_DB=zentao \ -e PHP_MAX_EXECUTION_TIME=300 \ -e PHP_POST_MAX_SIZE=512M \ -e PHP_UPLOAD_MAX_FILESIZE=512M \ -v /data/zentao:/data \ -p 8088:80 \ hub.zentao.net/app/zentao:latest
- PHP_MAX_EXECUTION_TIME 设置为300秒
- PHP_POST_MAX_SIZE 设置为512M
- PHP_UPLOAD_MAX_FILESIZE 设置为 512M
禅道默认是将Session存储在共享存储中,因此多节点部署也可以满足Session共享的需求,但如果你想通过Redis来存储Session也是可以的,只需要在启动容器是传入两个参数即可:
PHP_SESSION_TYPEPHP_SESSION_PATH启动命令示例如下:
bash# 运行redis docker run -d --rm --name redis redis:3.2.12-alpine3.8 # 运行mysql docker run -d --rm --name mysql -e MYSQL_ROOT_PASSWORD=pass4you mysql:5.7.38-debian # 运行禅道 docker run -d --rm --name zentao \ --link mysql \ --link redis \ -e ZT_MYSQL_HOST=mysql \ -e ZT_MYSQL_PORT=3306 \ -e ZT_MYSQL_USER=root \ -e ZT_MYSQL_PASSWORD=pass4you \ -e ZT_MYSQL_DB=zentao \ -e PHP_SESSION_TYPE=redis \ -e PHP_SESSION_PATH=tcp://redis:6379 \ -v /data/zentao:/data \ -p 8088:80 \ hub.zentao.net/app/zentao:latest
指定上面两个环境变量,实际上就是修改了php.ini中关于Session的配置:
inisession.save_handler = redis session.save_path = "tcp://redis:6379"
注意:
bash# 启动开源版及相关的服务 make run # 查看服务状态 make ps # 查看服务日志 docker-compose logs -f zentao
说明:
bashhelm repo add zentao [***] helm repo update helm search repo zentao/zentao helm upgrade -i zentao-open zentao/zentao --set ingress.enabled=true --set ingress.host=zentao.example.local
bash# 下载zentao charts helm pull zentao/zentao --untar # 自定义配置 zentao/values.yaml, 示例 helm upgrade -i zentao-open zentao/zentao -f custom.yaml
容器镜像已为版本升级做了特殊处理,当检测数据(数据库/持久化文件)版本与镜像内运行的程序版本不一致时,会进行数据库结构的检查,并自动进行数据库升级操作。
因此,升级版本只需要更换镜像版本号即可:
修改 docker-compose.yml 文件
diff... zentao: - image: hub.zentao.net/app/zentao:18.5 + image: hub.zentao.net/app/zentao:18.6 container_name: zentao ...
更新服务
bash# 是用新版本镜像更新服务 docker-compose up -d # 查看服务状态和镜像版本 docker-compose ps
容器内临时安装软件,可以通过封装好的 /usr/sbin/install_packages 命令,该命令支持设置MIRROR参数,国内使用时,指定 MIRROR=true 会使用国内的加速源。实例如下:
bashexport MIRROR=true;install_packages vim
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务