一站式Docker部署Atlassian全家桶:Jira、Confluence、Bitbucket与Bamboo实战指南
2026/5/16 14:00:10 网站建设 项目流程

1. 为什么选择Docker部署Atlassian全家桶?

在软件开发团队中,Jira、Confluence、Bitbucket和Bamboo的组合堪称黄金搭档。Jira负责项目管理,Confluence专注知识沉淀,Bitbucket管理代码仓库,Bamboo实现持续集成。但传统部署方式需要分别在服务器上安装配置,不仅耗时耗力,还容易遇到环境冲突问题。

Docker容器化部署正好解决了这些痛点。通过容器隔离,每个应用都有独立的运行环境,不会互相干扰。使用Docker Compose编排,只需一个命令就能启动所有服务。我在实际项目中测试过,从零开始到全套环境就绪,传统方式需要2天,而Docker部署只需30分钟。

更重要的是,Docker部署具有以下优势:

  • 环境一致性:开发、测试、生产环境完全一致,告别"在我机器上是好的"这类问题
  • 快速迁移:整个环境可以打包迁移到任何支持Docker的主机
  • 资源隔离:每个服务有独立的内存、CPU限制,避免资源抢占
  • 版本管理:可以精确控制每个工具的版本,方便升级和回滚

2. 部署前的准备工作

2.1 硬件与系统要求

建议使用配置不低于4核CPU、8GB内存的Linux服务器。我测试过在2核4GB的机器上也能运行,但性能会比较紧张。操作系统推荐Ubuntu 22.04 LTS或CentOS 8,内核版本需要5.x以上。

需要预先安装的软件:

  • Docker 20.10+
  • Docker Compose 2.0+
  • 至少50GB的磁盘空间(数据会持续增长)

安装Docker和Docker Compose的命令:

# Ubuntu系统 sudo apt-get update sudo apt-get install -y docker.io docker-compose sudo systemctl enable --now docker # CentOS系统 sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install -y docker-ce docker-ce-cli containerd.io sudo systemctl enable --now docker sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose

2.2 网络与存储规划

建议为每个服务分配独立的端口:

  • Jira: 8080
  • Confluence: 8090
  • Bitbucket: 7990
  • Bamboo: 8085

数据存储方面,建议为每个服务创建独立的卷目录:

/atlassian/ ├── jira/ │ ├── data/ │ └── logs/ ├── confluence/ │ ├── data/ │ └── logs/ ├── bitbucket/ │ └── data/ └── bamboo/ ├── data/ └── logs/

3. Docker Compose编排文件详解

3.1 基础架构设计

我们使用PostgreSQL作为所有Atlassian产品的统一数据库。虽然每个产品可以使用独立数据库实例,但统一管理更方便。数据库容器会暴露5432端口,其他服务通过容器网络连接。

完整docker-compose.yml文件:

version: '3.8' x-common-config: &common-config environment: TZ: Asia/Shanghai LANG: en_US.UTF-8 services: postgres: image: postgres:14.10 container_name: atlassian_db restart: unless-stopped environment: POSTGRES_USER: root POSTGRES_PASSWORD: root POSTGRES_DB: postgres POSTGRES_INITDB_ARGS: '--encoding=UTF8 --lc-collate=C --lc-ctype=C' volumes: - ./postgres/data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U root"] interval: 10s timeout: 5s retries: 5 jira: <<: *common-config image: atlassian/jira-software:9.4.11 container_name: jira depends_on: postgres: condition: service_healthy ports: - "8080:8080" environment: - JVM_MINIMUM_MEMORY=1024m - JVM_MAXIMUM_MEMORY=2048m - ATL_JDBC_URL=jdbc:postgresql://postgres:5432/jiradb - ATL_JDBC_USER=jira - ATL_JDBC_PASSWORD=jira - ATL_DB_TYPE=postgresql volumes: - ./jira/data:/var/atlassian/application-data/jira - ./jira/logs:/opt/atlassian/jira/logs confluence: <<: *common-config image: atlassian/confluence-server:8.5.4 container_name: confluence depends_on: postgres: condition: service_healthy ports: - "8090:8090" environment: - JVM_MINIMUM_MEMORY=1024m - JVM_MAXIMUM_MEMORY=2048m - ATL_JDBC_URL=jdbc:postgresql://postgres:5432/confluencedb - ATL_JDBC_USER=confluence - ATL_JDBC_PASSWORD=confluence - ATL_DB_TYPE=postgresql volumes: - ./confluence/data:/var/atlassian/application-data/confluence - ./confluence/logs:/opt/atlassian/confluence/logs bitbucket: <<: *common-config image: atlassian/bitbucket-server:8.9.1 container_name: bitbucket depends_on: postgres: condition: service_healthy ports: - "7990:7990" - "7999:7999" environment: - JVM_MINIMUM_MEMORY=1024m - JVM_MAXIMUM_MEMORY=2048m - JDBC_URL=jdbc:postgresql://postgres:5432/bitbucketdb - JDBC_USER=bitbucket - JDBC_PASSWORD=bitbucket - JDBC_DRIVER=org.postgresql.Driver volumes: - ./bitbucket/data:/var/atlassian/application-data/bitbucket bamboo: <<: *common-config image: atlassian/bamboo-server:9.2.3 container_name: bamboo depends_on: postgres: condition: service_healthy ports: - "8085:8085" - "54663:54663" # Remote agent port environment: - JVM_MINIMUM_MEMORY=1024m - JVM_MAXIMUM_MEMORY=2048m - BAMBOO_JDBC_URL=jdbc:postgresql://postgres:5432/bamboodb - BAMBOO_JDBC_USER=bamboo - BAMBOO_JDBC_PASSWORD=bamboo - BAMBOO_JDBC_DRIVER=org.postgresql.Driver volumes: - ./bamboo/data:/var/atlassian/application-data/bamboo - ./bamboo/logs:/opt/atlassian/bamboo/logs

3.2 关键配置说明

  1. 数据库配置

    • 使用PostgreSQL 14.10,这是Atlassian官方推荐的版本
    • 设置了正确的编码和排序规则,避免中文乱码问题
    • 配置了健康检查,确保服务只在数据库就绪后启动
  2. JVM内存设置

    • 为每个服务分配了1-2GB内存,这是中小型团队的推荐配置
    • 生产环境可以根据负载调整,但不要超过容器可用内存的70%
  3. 卷映射

    • 将数据目录映射到宿主机,确保容器重建后数据不丢失
    • 日志目录单独映射,方便问题排查
  4. 网络配置

    • 服务间通过Docker内部DNS名称通信(如postgres)
    • 外部端口避免冲突,使用标准Atlassian产品端口

4. 初始化数据库与启动服务

4.1 数据库初始化

在启动服务前,需要先创建数据库和用户。可以通过以下SQL脚本初始化:

# 进入PostgreSQL容器 docker exec -it atlassian_db psql -U root # 在PostgreSQL交互终端执行以下SQL CREATE DATABASE jiradb WITH ENCODING 'UTF8' LC_COLLATE 'C' LC_CTYPE 'C' TEMPLATE template0; CREATE USER jira WITH PASSWORD 'jira'; GRANT ALL PRIVILEGES ON DATABASE jiradb TO jira; CREATE DATABASE confluencedb WITH ENCODING 'UTF8' OWNER confluence CONNECTION LIMIT=-1; CREATE USER confluence WITH PASSWORD 'confluence'; GRANT ALL PRIVILEGES ON DATABASE confluencedb TO confluence; CREATE DATABASE bitbucketdb WITH ENCODING 'UTF8' OWNER bitbucket CONNECTION LIMIT=-1; CREATE USER bitbucket WITH PASSWORD 'bitbucket'; GRANT ALL PRIVILEGES ON DATABASE bitbucketdb TO bitbucket; CREATE DATABASE bamboodb WITH ENCODING 'UTF8' OWNER bamboo CONNECTION LIMIT=-1; CREATE USER bamboo WITH PASSWORD 'bamboo'; GRANT ALL PRIVILEGES ON DATABASE bamboodb TO bamboo;

4.2 启动与验证服务

执行以下命令启动所有服务:

docker-compose up -d

启动后,可以通过以下命令检查服务状态:

docker-compose ps

正常情况应该看到所有服务状态为"running"。如果某个服务启动失败,可以查看日志:

docker-compose logs -f 服务名

服务就绪后,可以通过浏览器访问:

  • Jira: http://服务器IP:8080
  • Confluence: http://服务器IP:8090
  • Bitbucket: http://服务器IP:7990
  • Bamboo: http://服务器IP:8085

5. 常见问题与解决方案

5.1 Bitbucket启动失败问题

这是部署过程中最常见的问题,通常表现为Bitbucket容器不断重启。根据我的经验,90%的情况是版本兼容性问题。

解决方案:

  1. 检查日志确认具体错误
  2. 如果是内核兼容性问题,可以尝试降级Bitbucket版本
  3. 确保挂载的数据目录权限正确
# 查看Bitbucket日志 docker-compose logs -f bitbucket # 如果出现内核不兼容警告,修改docker-compose.yml bitbucket: image: atlassian/bitbucket-server:7.21.20 # 使用更稳定的旧版本

5.2 数据库连接问题

如果服务启动后无法连接数据库,可以按以下步骤排查:

  1. 检查数据库容器是否正常运行
  2. 验证网络连接:
    docker exec -it jira ping postgres
  3. 检查数据库用户权限
  4. 查看数据库日志:
    docker-compose logs -f postgres

5.3 性能优化建议

对于生产环境,建议进行以下优化:

  1. 增加JVM内存参数:
    environment: - JVM_MINIMUM_MEMORY=2048m - JVM_MAXIMUM_MEMORY=4096m
  2. 配置数据库性能参数:
    postgres: environment: - POSTGRES_SHARED_BUFFERS=1GB - POSTGRES_EFFECTIVE_CACHE_SIZE=3GB
  3. 使用Nginx反向代理,添加缓存和压缩

6. 维护与升级

6.1 日常维护

建议的维护操作:

  1. 定期备份数据目录和数据库
  2. 监控磁盘空间使用情况
  3. 定期检查服务日志

备份数据库的命令:

docker exec -t atlassian_db pg_dumpall -U root > atlassian_backup.sql

6.2 版本升级

升级步骤:

  1. 备份所有数据和数据库
  2. 修改docker-compose.yml中的镜像版本
  3. 停止并删除旧容器:
    docker-compose down
  4. 拉取新镜像并启动:
    docker-compose pull docker-compose up -d

特别注意:

  • 升级前查看Atlassian官方升级文档
  • 按顺序升级:数据库 → Jira → Confluence → Bitbucket → Bamboo
  • 每次只升级一个服务,验证正常后再继续

我在实际升级过程中发现,跨大版本升级时(如Jira 8 → 9),最好先升级到中间的过渡版本,避免直接跳过大版本导致兼容性问题。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询