zentao

easysoft/zentao

easysoft

禅道官方(ZenTao Official)是为企业及团队提供专业项目管理软件与服务的官方平台,专注于产品管理、项目协作、任务跟踪、缺陷管理等一体化解决方案,助力团队高效规划研发流程、统筹资源分配、把控项目进度,实现从需求提出到产品交付的全流程可视化管理,提升协作效率与项目成功率。

140 次收藏下载次数: 0状态:社区镜像维护者:easysoft仓库类型:镜像最近更新:6 天前
让 AI 帮你使用轩辕镜像?

如果你使用 DeepSeek元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。

只需在 AI 对话中先发送下面这句话即可:

请先完整阅读并严格遵守以下文档中的全部规则与要求:

https://xuanyuan.cloud/agents.md

在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。

查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AIDeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。

下载命令
点击查看

禅道官方镜像(ZenTaoPMS)

特别说明

从 18.6 版本开始(企业版 8.6 ,旗舰版 4.6),我们重新调整了docker镜像的结构,如果您从其他的版本升级到 18.6 之后的版本,请务必参考【 旧版Docker镜像升级说明】,全新安装不受影响。

快速参考

  • 通过 https://www.qucheng.com/app-install/install-zentao-126.html 一键安装 ZenTao
  • https://github.com/quicklyon/zentao-docker
  • https://github.com/easysoft/zentaopms
  • ZenTao 官网

一、关于 ZenTao

禅道是一款开源的全生命周期项目管理软件,基于敏捷和CMMI管理理念进行设计,集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体,完整地覆盖了项目管理的核心流程。

禅和道是中国文化中极具代表意义的两个字,是中国传统文化的结晶。我们之所以选用“禅道”作为我们软件的名字,是希望通过这两个字来传达我们对管理的理解和思考。我们希望通过禅道来进行的管理,可以摒弃繁文缛节,还原管理的本质!

ZenTao官网:[***]

二、支持的版本(Tag)

由于版本比较多,这里只列出最新的5个版本,更详细的版本列表请参考:https://hub.docker.com/r/easysoft/quickon-zentao/tags/

镜像版本

镜像地址:

  • hub.zentao.net/app/zentao(mirror镜像)

  • https://hub.docker.com/r/easysoft/zentao

  • 开源版

    • latest, 18.6, 18.6-20230831
    • 18.5, 18.5-20230713
    • 18.4, 18.4-20230625
    • 18.3-20230424
    • 18.2-20230315
    • 18.1-20230216
  • 企业版

    • biz8.6, biz8.6-20230831
    • biz8.6.k8s, biz8.6.k8s-20230831
    • biz8.5, biz8.5-20230713
    • biz8.5.k8s, biz8.5.k8s-20230713
    • biz8.4, biz8.4-20230625
    • biz8.4.k8s, biz8.4.k8s-20230625
    • biz8.3-20230424
    • biz8.3.k8s-20230424
    • biz8.2-20230315
    • biz8.2.k8s-20230315
  • 旗舰版

    • max4.6, max4.6-20230831
    • max4.6.k8s, max4.6.k8s-20230831
    • max4.5, max4.5-20230713
    • max4.5.k8s, max4.5.k8s-20230713
    • max4.4, max4.4-20230625
    • max4.4.k8s, max4.4.k8s-20230625
    • max4.3-20230424
    • max4.3.k8s-20230424
    • max4.2-20230315
    • max4.2.k8s-20230315
  • IPD版本

    • ipd1.1, ipd1.0.1-20230831
    • ipd1.0, ipd1.0-20230802
    • ipd1.0.beta1-20230522
  • 迅捷版

    • lite1.2-20221205
  • 迅捷企业版

    • litevip1.2-20221205

三、获取镜像

推荐从 https://hub.docker.com/r/easysoft/quickon-zentao 拉取我们构建好的官方Docker镜像。

bash
docker pull hub.zentao.net/app/zentao:latest

如需使用指定的版本,可以拉取一个包含版本标签的镜像,在Docker Hub仓库中查看 https://hub.docker.com/r/easysoft/quickon-zentao/tags/

bash
docker pull hub.zentao.net/app/zentao:[TAG]

四、运行镜像

禅道容器镜像做了特殊处理,将所有需要持久化的数据都保存到了 /data 目录,因此,运行禅道容器镜像,您只需要将持久化目录挂载到容器的 /data 目录即可。

如果挂载的目录为空,首次启动会自动初始化相关文件

bash
docker run -it \
    -v $PWD/data:/data \
    -e MYSQL_INTERNAL=true \
    hub.zentao.net/app/zentao:latest

执行上面的命令后,会启动禅道镜像,通过设置 MYSQL_INTERNAL=true 会启动内置的MySQL服务。

4.1 使用外部的MySQL服务

连接到外部MySQL服务:

bash
docker 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:
      - '13306:3306'
    volumes:
      - /data/zentao/db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=pass4Zentao
      - ZT_MYSQL_DB=zentao
    networks:
      - zentao-net
...

五、环境变量

变量名默认值说明
DEBUGfalse是否打开调试信息,默认关闭
PHP_SESSION_TYPEfilesphp session 类型,files | redis
PHP_SESSION_PATH/data/php/sessionphp session 存储路径
PHP_MAX_EXECUTION_TIME120最大执行时间,单位秒,有助于防止有问题程序占尽服务器资源。默认120
PHP_MEMORY_LIMIT256M单个php进程允许分配的最大内存
PHP_POST_MAX_SIZE128M允许最大Post数据大小
PHP_UPLOAD_MAX_FILESIZE128M单个文件上传的最大值
MYSQL_INTERNALfalse使用内部的MySQL,默认关闭
ZT_MYSQL_HOST127.0.0.1MySQL 主机地址
ZT_MYSQL_PORT3306MySQL 端口
ZT_MYSQL_DBzentaozentao数据库名称
ZT_MYSQL_USERrootMySQL用户名
ZT_MYSQL_PASSWORDpass4zenTaoMySQL密码
LDAP_ENABLEDfalse是否启用LDAP
LDAP_HOST127.0.0.1LDAP服务主机地址
LDAP_PORT389LDAP服务端口
LDAP_BASEDNdc=quickon,dc=orgLDAP BaseDN
LDAP_ADMINUSERcn=admin,dc=quickon,dc=orgLDAP 管理员
LDAP_BINDPASSWORDpass4zenTaoLDAP Bind 密码
LDAP_USERKEYuidLDAP 用户名称的字段名
LDAP_EMAILKEYmailLDAP 用户***的字段名
LDAP_GROUP1默认用户组(1: 管理员, 2: 研发, 3: 测试, 类比)
LDAP_REALNAMEnameLDAP 用户真实姓名的字段名
LDAP_REPEATPOLICYnumberLDAP 用户重名策略,number:数字后缀,dept:部门后缀
LDAP_AUTOCREATE1LDAP 用户自动创建,1:自动创建,0:不自动创建
SMTP_ENABLEDfalse启用SMTP
SMTP_FROMNAMEZenTao $VERSIONSMTP发件人显示名称
SMTP_HOST127.0.0.1SMTP 服务主机地址
SMTP_PORT25SMTP 服务端口号
SMTP_USER***SMTP发件人***地址
SMTP_PASSpass4zenTaoSMTP发件人***密码
LINK_GITfalseDevOps模块,是否链接Git服务
GIT_TYPEgitea连接的git服务名称,目前支持 gitea/gogs/gitlab
GIT_INSTANCE_NAMEgiteaGit 服务名称
GIT_USERNAMErootGit 管理员账号名称,用于生成token
GIT_PASSWORDpass4QuickOnGit 管理员密码,用于生成token
GIT_PROTOCOLhttpsGit 服务协议类型,http或https(废弃)
GIT_DOMAIN[***]Git 服务域名(完整域名包含协议头)
GIT_TOKEN-Git Token优先级高于用户名, 默认为空
LINK_CIfalseDevOps模块,是否链接CI服务
CI_TYPEjenkins连接的ci服务名称,目前支持 jenkins
CI_USERNAMErootCI 管理员账号名称,用于生成token
CI_PASSWORDpass4QuickOnCI 管理员密码,用于生成token
CI_PROTOCOLhttpsCI 协议类型,http或https(废弃)
CI_URL[***]CI 服务域名(完整域名包含协议头)
CI_TOKEN-CI Token优先级高于用户名, 默认为空
LINK_SCANfalseDevOps模块,是否链接扫描服务
SCAN_TYPEsonarqube连接的扫描服务名称,目前支持 sonarqube
SCAN_USERNAMEadminSCAN 管理员账号名称,用于生成token
SCAN_PASSWORDpass4QuickOnSCAN 管理员密码,用于生成token
SCAN_PROTOCOLhttpsSCAN 协议类型,http或https(废弃)
SCAN_URL[***]SCAN 服务域名(完整域名包含协议头)
IS_CONTAINERtrue是否在容器内运行,zentao更新时使用

5.1 调整最大上传文件的限制

通过设置 PHP_POST_MAX_SIZEPHP_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存储在Redis

禅道默认是将Session存储在共享存储中,因此多节点部署也可以满足Session共享的需求,但如果你想通过Redis来存储Session也是可以的,只需要在启动容器是传入两个参数即可:

  • PHP_SESSION_TYPE
  • PHP_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的配置:

ini
session.save_handler = redis
session.save_path = "tcp://redis:6379"

注意

  • 镜像内的脚本已经做了特殊处理,因此环境变量的值加不加引号,都不影响正常使用。
  • 示例使用了link的方式连接了mysql和redis,因此可以直接使用连接名称来连接mysql和redis。

七、运行

7.1 单机Docker-compose方式运行

bash
# 启动开源版及相关的服务
make run

# 查看服务状态
make ps

# 查看服务日志
docker-compose logs -f zentao

说明:

  • https://github.com/quicklyon/zentao-docker/blob/master/VERSION 文件中详细的定义了Makefile可以操作的版本
  • https://github.com/quicklyon/zentao-docker/blob/master/docker-compose.yml

7.2 Kubernetes通过helm命令安装开源版示例

bash
helm repo add zentao https://hub.qucheng.com/chartrepo/stable
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

九、其他

9.1 容器内安装软件

容器内临时安装软件,可以通过封装好的 /usr/sbin/install_packages 命令,该命令支持设置MIRROR参数,国内使用时,指定 MIRROR=true 会使用国内的加速源。实例如下:

bash
export MIRROR=true;install_packages vim

镜像拉取方式

您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面

轩辕镜像加速拉取命令点我查看更多 zentao 镜像标签

docker pull docker.xuanyuan.run/easysoft/zentao:<标签>

DockerHub 原生拉取命令

docker pull easysoft/zentao:<标签>

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

用户头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

专业版 · 高速稳定拉取镜像
50GB 仅 ¥8/年
高速镜像下载在线技术支持99.95% SLA 保障付费会员免广告