Confluence 7.15.0 容器化全栈部署指南:Docker Compose + Nginx + PostgreSQL + Let's Encrypt

1. 容器化技术栈的优势与设计思路

在传统部署方式中,Confluence的安装往往面临以下痛点:

  • 环境依赖复杂 :需要手动配置Java环境、数据库连接、应用服务器等
  • 升级困难 :版本升级可能导致配置丢失或服务中断
  • 资源隔离差 :多个服务共用系统环境可能引发冲突
  • 迁移成本高 :系统重装时需要重新配置所有组件

容器化方案通过以下方式解决这些问题:

  • 环境标准化 :所有组件运行在隔离的容器环境中
  • 一键部署 :通过Docker Compose定义完整的服务拓扑
  • 资源隔离 :每个服务拥有独立的运行环境
  • 快速迁移 :配置和数据通过卷(volume)持久化

本方案的技术栈组成:

  • 应用层 :Confluence 7.15.0官方容器镜像
  • 数据层 :PostgreSQL 13容器(推荐用于生产环境)
  • 代理层 :Nginx实现反向代理和HTTPS终止
  • 编排工具 :Docker Compose定义服务依赖关系

2. 基础环境准备

2.1 服务器要求

建议的最低硬件配置:

  • CPU :4核(并发用户>50时建议8核)
  • 内存 :8GB(生产环境建议16GB以上)
  • 存储 :100GB SSD(数据卷需要持久化存储)

软件依赖:

# 安装Docker和Docker Compose
sudo apt-get update && sudo apt-get install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

sudo apt-get update && sudo apt-get install -y \
    docker-ce docker-ce-cli containerd.io \
    docker-compose-plugin

2.2 目录结构规划

建议的部署目录结构:

/confluence
├── docker-compose.yml       # 服务编排定义文件
├── nginx
│   ├── conf.d
│   │   └── confluence.conf  # Nginx虚拟主机配置
│   └── ssl                  # SSL证书目录
├── postgres-data            # 数据库持久化数据
└── confluence-data           # Confluence应用数据

初始化目录:

mkdir -p /confluence/{nginx/{conf.d,ssl},postgres-data,confluence-data}

3. Docker Compose编排配置

3.1 完整编排文件

创建 docker-compose.yml 文件:

version: '3.8'

services:
  postgres:
    image: postgres:13
    container_name: confluence_db
    environment:
      POSTGRES_DB: confluence
      POSTGRES_USER: confluence
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
    networks:
      - confluence-net
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U confluence"]
      interval: 5s
      timeout: 5s
      retries: 5

  confluence:
    image: atlassian/confluence-server:7.15.0
    container_name: confluence_app
    depends_on:
      postgres:
        condition: service_healthy
    environment:
      ATL_JDBC_URL: jdbc:postgresql://postgres:5432/confluence
      ATL_JDBC_USER: confluence
      ATL_JDBC_PASSWORD: ${DB_PASSWORD}
      ATL_DB_TYPE: postgresql
    volumes:
      - ./confluence-data:/var/atlassian/application-data/confluence
    networks:
      - confluence-net
    ports:
      - "8090:8090"
    restart: unless-stopped

  nginx:
    image: nginx:1.21
    container_name: confluence_proxy
    depends_on:
      - confluence
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./nginx/ssl:/etc/nginx/ssl
    ports:
      - "80:80"
      - "443:443"
    networks:
      - confluence-net
    restart: unless-stopped

networks:
  confluence-net:
    driver: bridge

关键配置说明:

  • PostgreSQL :使用官方镜像,通过环境变量初始化数据库
  • Confluence :绑定数据卷确保配置持久化
  • Nginx :挂载配置目录实现灵活的反代配置

3.2 环境变量配置

创建 .env 文件管理敏感信息:

# PostgreSQL配置
DB_PASSWORD=your_secure_password_here

# 时区设置
TZ=Asia/Shanghai

设置文件权限:

chmod 600 .env

4. 数据库优化配置

4.1 PostgreSQL性能调优

docker-compose.yml 中为PostgreSQL服务添加以下配置:

environment:
  POSTGRES_DB: confluence
  POSTGRES_USER: confluence
  POSTGRES_PASSWORD: ${DB_PASSWORD}
  # 优化参数
  POSTGRES_SHARED_BUFFERS: 2GB
  POSTGRES_EFFECTIVE_CACHE_SIZE: 6GB
  POSTGRES_MAINTENANCE_WORK_MEM: 512MB
  POSTGRES_WORK_MEM: 32MB

4.2 字符集与事务隔离

数据库初始化后执行以下SQL:

ALTER DATABASE confluence SET default_transaction_isolation TO 'read committed';
ALTER SYSTEM SET max_connections = 200;
ALTER SYSTEM SET shared_buffers = '2GB';
ALTER SYSTEM SET effective_cache_size = '6GB';

5. Nginx反向代理配置

5.1 基础代理配置

创建 nginx/conf.d/confluence.conf

upstream confluence {
    server confluence_app:8090;
}

server {
    listen 80;
    server_name wiki.yourdomain.com;
    
    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl http2;
    server_name wiki.yourdomain.com;

    ssl_certificate /etc/nginx/ssl/live/wiki.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/live/wiki.yourdomain.com/privkey.pem;
    
    # SSL优化配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;

    location / {
        proxy_pass http://confluence;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # 处理Synchrony长连接
    location /synchrony {
        proxy_pass http://confluence/synchrony;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_read_timeout 86400;
    }
}

5.2 Let's Encrypt证书配置

使用Certbot获取证书:

sudo apt install certbot
sudo certbot certonly --standalone -d wiki.yourdomain.com

配置证书自动续期:

# 创建续期钩子脚本
cat > /etc/letsencrypt/renewal-hooks/deploy/confluence.sh <<EOF
#!/bin/bash
docker restart confluence_proxy
EOF
chmod +x /etc/letsencrypt/renewal-hooks/deploy/confluence.sh

6. 系统初始化与优化

6.1 启动完整服务栈

docker compose up -d

6.2 JVM参数调优

修改Confluence容器的JVM参数:

# 进入容器
docker exec -it confluence_app bash

# 编辑setenv.sh
vi /opt/atlassian/confluence/bin/setenv.sh

推荐配置:

CATALINA_OPTS="-Xms2048m -Xmx4096m -XX:+UseG1GC ${CATALINA_OPTS}"

6.3 连接池配置

在Confluence管理界面配置数据库连接池:

  1. 访问 https://wiki.yourdomain.com/setup/setupdb-start.action
  2. 选择"PostgreSQL"数据库类型
  3. 配置连接参数:
    • URL jdbc:postgresql://postgres:5432/confluence
    • 用户名 confluence
    • 密码 :从 .env 文件中获取

7. 备份与恢复策略

7.1 自动化备份方案

创建备份脚本 /confluence/backup.sh

#!/bin/bash
BACKUP_DIR="/confluence/backups"
DATE=$(date +%Y%m%d)

# 备份PostgreSQL
docker exec confluence_db pg_dump -U confluence -Fc confluence > $BACKUP_DIR/confluence_db_$DATE.dump

# 备份Confluence家目录
tar czf $BACKUP_DIR/confluence_home_$DATE.tar.gz -C /confluence/confluence-data .

# 保留最近7天备份
find $BACKUP_DIR -type f -mtime +7 -delete

设置定时任务:

chmod +x /confluence/backup.sh
(crontab -l 2>/dev/null; echo "0 2 * * * /confluence/backup.sh") | crontab -

7.2 灾难恢复流程

数据库恢复:

docker exec -i confluence_db pg_restore -U confluence -d confluence -c < backup_file.dump

应用数据恢复:

tar xzf backup_file.tar.gz -C /confluence/confluence-data

8. 监控与维护

8.1 健康检查端点

Confluence内置的健康检查端点:

  • http://localhost:8090/status
  • http://localhost:8090/monitoring

8.2 日志管理

查看容器日志:

# Confluence应用日志
docker logs -f confluence_app

# PostgreSQL数据库日志
docker logs -f confluence_db

# Nginx访问日志
docker logs -f confluence_proxy

日志轮转配置示例:

# 在nginx配置中添加
access_log /var/log/nginx/confluence-access.log combined buffer=16k flush=5m;

9. 常见问题排查

9.1 启动问题诊断

检查服务状态:

docker compose ps
docker compose logs

9.2 性能问题优化

常见性能瓶颈及解决方案:

问题现象 可能原因 解决方案
页面加载慢 JVM内存不足 增加Xmx参数
编辑冲突 Synchrony连接问题 检查Nginx WebSocket配置
数据库超时 连接池耗尽 增大dbcp.maxActive参数
搜索延迟 索引过时 重建搜索索引

9.3 版本升级流程

  1. 停止当前服务
  2. 备份数据和配置
  3. 修改 docker-compose.yml 中的镜像版本
  4. 重新启动服务
  5. 访问 /upgrade 页面完成数据库迁移
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐