核心内容摘要
4个维度构建Yuzu模拟器版本安全管理与高效运行诊断指南
为什么选择Docker部署Atlassian全家桶在软件开发团队中Jira、Confluence、Bitbucket和Bamboo的组合堪称黄金搭档。
Jira负责项目管理Confluence专注知识沉淀Bitbucket管理代码仓库Bamboo实现持续集成。
但传统部署方式需要分别在服务器上安装配置不仅耗时耗力还容易遇到环境冲突问题。
Docker容器化部署正好解决了这些痛点。
通过容器隔离每个应用都有独立的运行环境不会互相干扰。
使用Docker Compose编排只需一个命令就能启动所有服务。
我在实际项目中测试过从零开始到全套环境就绪传统方式需要2天而Docker部署只需30分钟。
更重要的是Docker部署具有以下优势环境一致性开发、测试、生产环境完全一致告别在我机器上是好的这类问题快速迁移整个环境可以打包迁移到任何支持Docker的主机资源隔离每个服务有独立的内存、CPU限制避免资源抢占版本管理可以精确控制每个工具的版本方便升级和回滚
部署前的准备工作
1 硬件与系统要求建议使用配置不低于4核CPU、8GB内存的Linux服务器。
我测试过在2核4GB的机器上也能运行但性能会比较紧张。
操作系统推荐Ubuntu
2
04 LTS或CentOS 8内核版本需要
x以上。
需要预先安装的软件Docker
2
10Docker Compose
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/v
2.
2
3/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose sudo chmod x /usr/local/bin/docker-compose
2 网络与存储规划建议为每个服务分配独立的端口Jira: 8080Confluence: 8090Bitbucket: 7990Bamboo: 8085数据存储方面建议为每个服务创建独立的卷目录/atlassian/ ├── jira/ │ ├── data/ │ └── logs/ ├── confluence/ │ ├── data/ │ └── logs/ ├── bitbucket/ │ └── data/ └── bamboo/ ├── data/ └── logs/
Docker Compose编排文件详解
1 基础架构设计我们使用PostgreSQL作为所有Atlassian产品的统一数据库。
虽然每个产品可以使用独立数据库实例但统一管理更方便。
数据库容器会暴露5432端口其他服务通过容器网络连接。
完整docker-compose.yml文件version:
8 x-common-config: common-config environment: TZ: Asia/Shanghai LANG: en_US.UTF-8 services: postgres: image: postgres:
1
10 container_name: atlassian_db restart: unless-stopped environment: POSTGRES_USER: root POSTGRES_PASSWORD: root POSTGRES_DB: postgres POSTGRES_INITDB_ARGS: --encodingUTF8 --lc-collateC --lc-ctypeC 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.
11 container_name: jira depends_on: postgres: condition: service_healthy ports: - 8080:8080 environment: - JVM_MINIMUM_MEMORY1024m - JVM_MAXIMUM_MEMORY2048m - ATL_JDBC_URLjdbc:postgresql://postgres:5432/jiradb - ATL_JDBC_USERjira - ATL_JDBC_PASSWORDjira - ATL_DB_TYPEpostgresql volumes: - ./jira/data:/var/atlassian/application-data/jira - ./jira/logs:/opt/atlassian/jira/logs confluence: : *common-config image: atlassian/confluence-server:
8.
4 container_name: confluence depends_on: postgres: condition: service_healthy ports: - 8090:8090 environment: - JVM_MINIMUM_MEMORY1024m - JVM_MAXIMUM_MEMORY2048m - ATL_JDBC_URLjdbc:postgresql://postgres:5432/confluencedb - ATL_JDBC_USERconfluence - ATL_JDBC_PASSWORDconfluence - ATL_DB_TYPEpostgresql volumes: - ./confluence/data:/var/atlassian/application-data/confluence - ./confluence/logs:/opt/atlassian/confluence/logs bitbucket: : *common-config image: atlassian/bitbucket-server:
8.
1 container_name: bitbucket depends_on: postgres: condition: service_healthy ports: - 7990:7990 - 7999:7999 environment: - JVM_MINIMUM_MEMORY1024m - JVM_MAXIMUM_MEMORY2048m - JDBC_URLjdbc:postgresql://postgres:5432/bitbucketdb - JDBC_USERbitbucket - JDBC_PASSWORDbitbucket - JDBC_DRIVERorg.postgresql.Driver volumes: - ./bitbucket/data:/var/atlassian/application-data/bitbucket bamboo: : *common-config image: atlassian/bamboo-server:
9.
3 container_name: bamboo depends_on: postgres: condition: service_healthy ports: - 8085:8085 - 54663:54663 # Remote agent port environment: - JVM_MINIMUM_MEMORY1024m - JVM_MAXIMUM_MEMORY2048m - BAMBOO_JDBC_URLjdbc:postgresql://postgres:5432/bamboodb - BAMBOO_JDBC_USERbamboo - BAMBOO_JDBC_PASSWORDbamboo - BAMBOO_JDBC_DRIVERorg.postgresql.Driver volumes: - ./bamboo/data:/var/atlassian/application-data/bamboo - ./bamboo/logs:/opt/atlassian/bamboo/logs
2 关键配置说明数据库配置使用PostgreSQL
1
10这是Atlassian官方推荐的版本设置了正确的编码和排序规则避免中文乱码问题配置了健康检查确保服务只在数据库就绪后启动JVM内存设置为每个服务分配了
GB内存这是中小型团队的推荐配置生产环境可以根据负载调整但不要超过容器可用内存的70%卷映射将数据目录映射到宿主机确保容器重建后数据不丢失日志目录单独映射方便问题排查网络配置服务间通过Docker内部DNS名称通信如postgres外部端口避免冲突使用标准Atlassian产品端口
初始化数据库与启动服务
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;
2 启动与验证服务执行以下命令启动所有服务docker-compose up -d启动后可以通过以下命令检查服务状态docker-compose ps正常情况应该看到所有服务状态为running。
如果某个服务启动失败可以查看日志docker-compose logs -f 服务名服务就绪后可以通过浏览器访问Jira: http://服务器IP:8080Confluence: http://服务器IP:8090Bitbucket: http://服务器IP:7990Bamboo: http://服务器IP:
80855.
常见问题与解决方案
1 Bitbucket启动失败问题这是部署过程中最常见的问题通常表现为Bitbucket容器不断重启。
根据我的经验90%的情况是版本兼容性问题。
解决方案检查日志确认具体错误如果是内核兼容性问题可以尝试降级Bitbucket版本确保挂载的数据目录权限正确# 查看Bitbucket日志 docker-compose logs -f bitbucket # 如果出现内核不兼容警告修改docker-compose.yml bitbucket: image: atlassian/bitbucket-server:
7.
2