阿里云上使用docker-compose安装禅道 📅 发布时间:2026/7/13 8:34:00 👁️ 浏览次数: 引言禅道 是一款国产的开源项目管理软件主要用于敏捷开发、测试管理和缺陷跟踪。它集成了项目管理、产品管理、质量管理、文档管理、组织管理和事务管理等功能适合软件开发团队使用。一、禅道的主要功能1.1产品管理需求管理收集、整理和跟踪用户需求。产品计划制定产品发布计划关联需求与任务。发布管理记录产品版本历史和功能变更。1.2项目管理任务分解将项目拆分为任务分配给团队成员。进度跟踪通过燃尽图、甘特图等工具监控项目进度。团队协作支持任务指派、工时记录和进度反馈。1.3质量管理测试用例管理创建、执行和跟踪测试用例。缺陷跟踪记录、分配和验证Bug关联到需求或任务。测试报告生成测试结果和缺陷统计报告。1.4文档管理存储项目文档、技术资料和会议记录支持版本控制。1.5流程自定义支持工作流、权限和字段的自定义适应不同团队流程。1.6多工具集成支持与Git、SVN、Jenkins、钉钉、企业微信等工具集成。二、禅道的适用场景敏捷开发团队支持Scrum、Kanban等敏捷方法论。传统瀑布模型团队提供项目计划、任务分解和进度跟踪。测试团队管理测试用例、Bug跟踪和测试报告。产品经理管理需求、版本规划和发布跟踪。三、禅道的优势开源免费提供社区版可免费使用和定制。一体化管理覆盖项目全生命周期减少工具切换成本。灵活定制适应不同团队的流程和需求。国产化支持符合国内团队的使用习惯提供本地化服务。四、禅道 Docker Compose 部署方案1. 目录结构准备mkdir-p zentao-docker/{mysql,app,backup}cdzentao-docker2. docker-compose.yml 配置文件version:3.8services: zentao: image: easysoft/zentao:latest# 官方镜像container_name: zentao restart: unless-stopped environment: -MYSQL_ROOT_PASSWORDZentao123456# MySQL root密码-ADMINER_ENABLEDtrue# 可选启用phpMyAdmin-BIND_ADDRESSfalse volumes:# 持久化禅道数据- ./app:/www/zentaopms# 持久化MySQL数据- ./mysql:/var/lib/mysql# 时区配置- /etc/localtime:/etc/localtime:ro# 自定义配置文件可选# - ./config/my.php:/www/zentaopms/config/my.phpports: -8080:80# Web访问端口-3307:3306# MySQL访问端口可选networks: - zentao-network depends_on: - zentao-db healthcheck: test:[CMD,curl,-f,http://localhost:80]interval: 30s timeout: 10s retries:3zentao-db: image: mysql:5.7# 禅道推荐MySQL 5.7container_name: zentao-db restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: Zentao123456 MYSQL_DATABASE: zentao MYSQL_USER: zentao MYSQL_PASSWORD: Zentao123456 TZ: Asia/Shanghai volumes:# MySQL数据持久化- ./mysql:/var/lib/mysql# 初始化SQL可选# - ./init.sql:/docker-entrypoint-initdb.d/init.sql# 配置文件- ./mysql/conf.d:/etc/mysql/conf.d# 时区- /etc/localtime:/etc/localtime:ro command: --character-set-serverutf8mb4 --collation-serverutf8mb4_unicode_ci --innodb_buffer_pool_size256M --max_connections1000networks: - zentao-network healthcheck: test:[CMD,mysqladmin,ping,-h,localhost,-u,root,-p$$MYSQL_ROOT_PASSWORD]interval: 30s timeout: 10s retries:5# 可选phpMyAdmin数据库管理phpmyadmin: image: phpmyadmin/phpmyadmin:latest container_name: zentao-phpmyadmin restart: unless-stopped environment: PMA_HOST: zentao-db PMA_PORT:3306UPLOAD_LIMIT: 512M ports: -8081:80networks: - zentao-network depends_on: - zentao-db networks: zentao-network: driver: bridge ipam: config: - subnet:172.20.0.0/163. 环境变量配置文件 (.env)# 创建环境变量文件cat.envEOF COMPOSE_PROJECT_NAMEzentao ZENTAO_VERSION18.8 MYSQL_ROOT_PASSWORDZentao123456 MYSQL_DATABASEzentao MYSQL_USERzentao MYSQL_PASSWORDZentao123456 TZAsia/Shanghai HTTP_PORT8080 MYSQL_PORT3307 PHPMYADMIN_PORT8081 EOF4. MySQL配置文件# 创建MySQL配置目录mkdir-p mysql/conf.d# 创建MySQL优化配置文件catmysql/conf.d/zentao.cnfEOF [mysqld] character-set-serverutf8mb4 collation-serverutf8mb4_unicode_ci max_connections1000 innodb_buffer_pool_size256M query_cache_type1 query_cache_size32M slow_query_log1 long_query_time2 log_queries_not_using_indexes1 # 时区设置 default-time-zone08:00 [client] default-character-setutf8mb4 EOF5. 启动脚本 (start.sh)#!/bin/bash# 禅道Docker部署脚本set-eecho 禅道部署开始 # 检查Docker和Docker Composeif!command-vdocker/dev/null;thenecho错误: Docker未安装exit1fiif!command-vdocker-compose/dev/null;thenecho错误: Docker Compose未安装exit1fi# 检查目录权限echo检查目录权限...mkdir-p ./{mysql,app,backup}chmod-R755./mysql ./appchown-R1000:1000 ./app# 禅道容器内用户UID通常为1000# 拉取镜像echo拉取Docker镜像...docker-composepull# 启动服务echo启动禅道服务...docker-composeup -d# 等待服务启动echo等待服务启动...sleep30# 检查服务状态echo检查服务状态...docker-composeps# 显示访问信息echo 部署完成 echo禅道访问地址: http://服务器IP:8080echo默认账号: adminecho默认密码: 123456echoecho数据库信息:echo- 主机: zentao-dbecho- 端口: 3306 (容器内)echo- 数据库: zentaoecho- 用户名: zentaoecho- 密码: Zentao123456echoechophpMyAdmin: http://服务器IP:8081echo 完成 6. 备份脚本 (backup.sh)#!/bin/bash# 禅道备份脚本BACKUP_DIR./backupDATE$(date%Y%m%d_%H%M%S)echo开始备份禅道数据...# 创建备份目录mkdir-p${BACKUP_DIR}/${DATE}# 备份MySQL数据库echo备份MySQL数据库...dockerexeczentao-db mysqldump -uroot -pZentao123456 --databases zentao${BACKUP_DIR}/${DATE}/zentao_db_${DATE}.sql# 备份禅道应用文件echo备份禅道应用文件...tar-czf${BACKUP_DIR}/${DATE}/zentao_app_${DATE}.tar.gz ./app# 备份MySQL数据文件echo备份MySQL数据文件...tar-czf${BACKUP_DIR}/${DATE}/mysql_data_${DATE}.tar.gz ./mysql# 创建备份清单cat${BACKUP_DIR}/${DATE}/README.txtEOF 禅道备份信息 备份时间:${DATE}备份内容: 1. 禅道数据库 (zentao_db_${DATE}.sql) 2. 禅道应用文件 (zentao_app_${DATE}.tar.gz) 3. MySQL数据文件 (mysql_data_${DATE}.tar.gz) 恢复说明: 1. 停止服务: docker-compose down 2. 恢复MySQL: docker exec -i zentao-db mysql -uroot -pZentao123456 zentao_db_${DATE}.sql 3. 恢复文件: tar -xzf zentao_app_${DATE}.tar.gz -C ./ tar -xzf mysql_data_${DATE}.tar.gz -C ./ 4. 启动服务: docker-compose up -d EOF# 删除7天前的备份find${BACKUP_DIR}-type d -mtime 7 -execrm-rf{}\;echo备份完成文件保存在:${BACKUP_DIR}/${DATE}7. 完整的部署流程# 1. 赋予脚本执行权限chmodx start.sh backup.sh# 2. 启动禅道服务./start.sh# 3. 查看日志docker-composelogs -f zentao# 4. 停止服务docker-composedown# 5. 备份数据./backup.sh# 6. 查看容器状态docker-composeps# 7. 进入容器调试dockerexec-it zentao /bin/bash
从草图到智能:达索系统CATIA开启工程开发的最新AI能力 在工程与设计领域,优化生产力、提升质量并缩短产品上市进程的压力比以往任何时候都更为巨大。为应对这一全球性行业挑战,CATIA为2025版引入了一项名为“草图生成式约束”(Sketch Generative Constraint)的新功能,它有望… 2026/7/12 16:23:39
NAT 超详细详解 一、NAT 基本概念1.1 什么是 NAT?NAT(Network Address Translation,网络地址转换) 就像是一个大楼的总机接线员:text想象一栋大楼: - 内部:100个房间(内网设备)ÿ… 2026/5/17 0:47:28
异步和多线程 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 异步和多线程的关系:不是等价,而是**交叉互补**的关系一、先明确两个概念的本质1. 异步(Asynchronous):一… 2026/7/11 22:36:22
数字 IC 项目 Makefile 模板解析:从 10+ 文件管理到一键仿真/综合 数字IC项目Makefile工程化实践:从零构建自动化设计流程在数字集成电路设计领域,效率与可靠性往往决定着项目成败。当RTL代码规模膨胀到数十个文件,当验证环境需要协调多种EDA工具,当团队成员频繁切换工作场景——一套精心设计的Ma… 2026/7/13 8:33:59
AI视频生成实战:Seedance 4K与Claude Fable 5打造足球短片 这次我们来拆解一个完整的AI足球短片制作流程,重点不是讲概念,而是看怎么用Seedance 4K和Claude Fable 5这两个工具,从零开始做出一部有情感冲击力的足球短片。如果你关心AI视频生成的实际效果、硬件门槛、工作流衔接和批量任务处理ÿ… 2026/7/13 8:33:59
C++继承中using声明的精准访问权限控制实战指南 1. 项目概述:为什么我们需要精准控制继承访问权限? 在C的继承体系中,访问权限控制是构建健壮、安全且易于维护的类层次结构的基石。我们经常遇到这样的场景:你设计了一个功能丰富的基类,其中包含了一些核心实现细节&am… 2026/7/13 8:31:59
Vulnhub y0usef 靶场实战:3种403绕过技巧与文件上传漏洞利用 Vulnhub y0usef 靶场实战:3种403绕过技巧与文件上传漏洞利用 在网络安全渗透测试的学习过程中,Vulnhub靶场因其丰富的实战场景和多样化的漏洞环境,成为安全爱好者提升技能的重要平台。y0usef靶场作为其中较为经典的练习环境,不仅涵… 2026/7/13 8:31:59
ROS C++中tf时间语义与缓存机制实战指南 1. 项目概述:为什么“用好TF”是ROS开发绕不开的第一道硬门槛 刚接触ROS的C开发者,十有八九会在第一个真正涉及多传感器协同的项目里栽在tf上——不是编译不过,不是节点起不来,而是明明看到 /tf 话题里源源不断发着变换数据&… 2026/7/13 8:27:58
3步实现PotPlayer外挂字幕实时翻译:免费百度翻译插件完整配置指南 3步实现PotPlayer外挂字幕实时翻译:免费百度翻译插件完整配置指南 【免费下载链接】PotPlayer_Subtitle_Translate_Baidu PotPlayer 字幕在线翻译插件 - 百度平台 项目地址: https://gitcode.com/gh_mirrors/po/PotPlayer_Subtitle_Translate_Baidu PotPlaye… 2026/7/13 8:27:58
HS2-HF Patch终极指南:如何用3步解决Honey Select 2的70+个痛点 HS2-HF Patch终极指南:如何用3步解决Honey Select 2的70个痛点 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 你是否曾经在Honey Select 2中遇到过… 2026/7/13 0:01:19
语音转文字工具AsrTools:让音频整理变得简单高效 语音转文字工具AsrTools:让音频整理变得简单高效 【免费下载链接】AsrTools ✨ AsrTools: Smart Voice-to-Text Tool | Efficient Batch Processing | User-Friendly Interface | No GPU Required | Supports SRT/TXT Output | Turn your audio into accurate text … 2026/7/13 0:03:19
基于深度学习的蘑菇或花卉或动漫人物或中草药货水果蔬菜等识别系统31(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_ 基于深度学习的蘑菇或花卉或动漫人物或中草药货水果蔬菜等识别系统31(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_ 独家界面!不会重复,此项目属于本人原创,若有雷同,均是盗卖,各位买… 2026/7/13 0:05:20
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/13 8:31:55
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/12 0:01:13
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/13 2:34:55