5分钟搞定!用Docker一键部署禅道项目管理系统,团队协作效率翻倍

前言

禅道是国内优秀的开源项目管理软件,支持产品管理、项目管理、质量管理等功能。本文将介绍如何使用Docker Compose快速部署一个完整的禅道系统,包括数据库、缓存和应用服务。

系统架构

本部署方案采用三个容器:

  • zentao-db: MariaDB 10.6 数据库服务
  • zentao-cache: Redis 6.2 缓存服务
  • zentao: 禅道应用服务

环境准备

前置条件

  • 安装Docker和Docker Compose
  • 确保80端口(映射为80)未被占用
  • 具备基本的Linux命令行操作能力

创建项目目录

mkdir zentao-docker
cd zentao-docker

配置详解

数据库服务配置

使用MariaDB作为数据库,关键配置如下:

  • 镜像: bitnami/mariadb:10.6
  • 字符集: utf8mb4,支持中文和特殊字符
  • 健康检查: 定期检查数据库连接状态
  • 数据持久化: 挂载本地目录保证数据不丢失

缓存服务配置

Redis用于session存储和数据缓存:

  • 镜像: bitnami/redis:6.2
  • 密码认证: 提供安全访问控制
  • 数据持久化: 防止缓存数据丢失

应用服务配置

禅道主应用的核心配置:

  • 端口映射: 容器80端口映射到主机80端口
  • PHP优化: 调整内存限制、执行时间等参数
  • Redis集成: 配置session存储和数据缓存

部署步骤

1. 创建docker-compose.yml文件

将文件内容保存为docker-compose.yml(完整内容见文末)

2. 创建数据目录

mkdir -p data/zentao/{mariadb,redis,data}

3. 启动服务

# 后台启动所有服务
docker-compose up -d

# 查看服务状态
docker-compose ps

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

4. 验证部署

打开浏览器访问 http://your-server-ip:80,如果看到禅道初始化页面说明部署成功。

初始化配置

数据库连接配置

  • 数据库类型: MySQL
  • 服务器: zentao-db
  • 端口: 3306
  • 数据库名: zentao
  • 用户名: root
  • 密码: pass4Zentao

Redis配置验证

系统会自动使用Redis进行session存储和数据缓存,无需手动配置。

运维管理

常用命令

# 停止服务
docker-compose down

# 重启特定服务
docker-compose restart zentao

# 查看容器资源使用情况
docker stats

# 备份数据库
docker exec zentao-db mysqldump -u root -ppass4Zentao zentao > zentao_backup.sql

数据备份策略

  • 数据库: 定期执行mysqldump备份
  • 文件数据: 备份./data/zentao/data目录
  • 配置文件: 备份docker-compose.yml文件

监控和日志

# 查看特定服务日志
docker-compose logs zentao-db
docker-compose logs zentao-cache

# 实时监控日志
docker-compose logs -f --tail=100

性能优化

PHP性能调优

配置文件中已优化的参数:

  • PHP_MEMORY_LIMIT=512M: 内存限制
  • PHP_MAX_EXECUTION_TIME=120: 脚本执行时间
  • PHP_POST_MAX_SIZE=128M: POST数据大小限制
  • PHP_UPLOAD_MAX_FILESIZE=128M: 文件上传限制

Redis缓存优化

  • 启用Redis作为session存储提高性能
  • 配置私有缓存作用域避免数据污染
  • 使用igbinary序列化器提升效率

故障排除

常见问题

  1. 端口冲突: 修改docker-compose.yml中的端口映射
  2. 权限问题: 确保data目录有正确的读写权限
  3. 内存不足: 根据服务器配置调整PHP内存限制
  4. 数据库连接失败: 检查数据库服务是否正常启动

调试方法

# 进入容器内部调试
docker exec -it zentao bash
docker exec -it zentao-db mysql -u root -p

# 检查网络连接
docker network ls
docker network inspect zentao-docker_zentao-net

安全建议

  1. 修改默认密码: 更改数据库和Redis的默认密码
  2. 网络隔离: 使用自定义网络隔离服务
  3. 定期更新: 保持镜像版本为最新稳定版
  4. 访问控制: 配置防火墙限制访问端口

扩展功能

使用国内镜像

如果网络环境需要,可以使用注释中的国内镜像地址:

image: hub.zentao.net/app/zentao
image: hub.zentao.net/app/mariadb:10.6-bitnami  
image: hub.zentao.net/app/redis:6.2-bitnami

集群部署

对于高并发场景,可以考虑:

  • 数据库读写分离
  • Redis集群模式
  • 多实例负载均衡

总结

通过Docker Compose部署禅道系统具有环境一致性好、部署简单、易于维护等优势。本方案提供了完整的数据库、缓存和应用服务,适合中小型团队快速搭建项目管理平台。

记住定期备份数据,并根据实际使用情况调整性能参数,确保系统稳定运行。


完整配置文件

version: "3.8"

services:
# db service for zentao
  zentao-db:
    image: bitnami/mariadb:10.6
    # 国内镜像
    # image: hub.zentao.net/app/mariadb:10.6-bitnami
    container_name: zentao-db
    pull_policy: if_not_present
    restart: always
    volumes:
      - './data/zentao/mariadb:/bitnami/mariadb'
    networks:
      - zentao-net
    environment:
      - MARIADB_USER=my_user
      - MARIADB_PASSWORD=my_password
      - MARIADB_DATABASE=zentao
      - MARIADB_CHARACTER_SET=utf8mb4
      - MARIADB_COLLATE=utf8mb4_unicode_ci
      - MARIADB_ROOT_PASSWORD=pass4Zentao
    healthcheck:
      test: ['CMD', '/opt/bitnami/scripts/mariadb/healthcheck.sh']
      interval: 15s
      timeout: 5s
      retries: 6
  zentao-cache:
    image: bitnami/redis:6.2
    # 国内镜像
    # image: hub.zentao.net/app/redis:6.2-bitnami
    container_name: zentao-cache
    pull_policy: if_not_present
    restart: always
    environment:
      - REDIS_PASSWORD=pass4Zentao
    volumes:
      - './data/zentao/redis:/bitnami/redis/data'
    networks:
      - zentao-net
# zentao service
  zentao:
    image: easysoft/zentao
    # 国内镜像
    # image: hub.zentao.net/app/zentao
    container_name: zentao
    pull_policy: always
    restart: always
    ports:
      - '80:80'
    volumes:
      - './data/zentao/data:/data'
    depends_on:
      - zentao-db
      - zentao-cache
    environment:
      - ZT_MYSQL_HOST=zentao-db
      - ZT_MYSQL_PORT=3306
      - ZT_MYSQL_USER=root
      - ZT_MYSQL_PASSWORD=pass4Zentao
      - ZT_MYSQL_DB=zentao
      # 从21.3版本开始,如果已经设置了redis相关环境变量自动开启redis session缓存,可不用配置如下环境变量
      - PHP_SESSION_TYPE=redis
      - PHP_SESSION_PATH=tcp://zentao-cache:6379?auth=pass4Zentao
      - PHP_EXT_REDIS=true
      - PHP_SESSION_REDIS_DATABASE=6 # 如果session是redis默认使用6, session database和cache database不要复用
      # end
      - ZT_REDIS_HOST=zentao-cache
      - ZT_REDIS_PORT=6379
      - ZT_REDIS_PASSWORD=pass4Zentao
      - ZT_REDIS_SERIALIZER=igbinary # php, igbinary
      # - ZT_REDIS_DATABASE=0 # 默认禅道为0
      - ZT_CACHE_ENABLE=true
      - ZT_CACHE_TYPE=redis
      - ZT_CACHE_SCOPE=private
      - ZT_CACHE_LIFETIME=0
      - PHP_MAX_EXECUTION_TIME=120
      - PHP_MEMORY_LIMIT=512M
      - PHP_POST_MAX_SIZE=128M
      - PHP_UPLOAD_MAX_FILESIZE=128M
    networks:
      - zentao-net
      # 指定mac地址设置网络如下,需要删除`- zentao-net`
      # zentao-net:
      # 02:42:ac:11:00:02为示例mac地址
      #   mac_address: 02:42:ac:11:00:02
networks:
  zentao-net:
    driver: bridge
# persistence for mysql, cache and zentao
volumes:
  zentao_db:
  zentao_cache:
  zentao_data:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱宇阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值