Confluence 7.15.0 容器化部署与Nginx反代:Docker Compose 一键启动与SSL配置
·
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管理界面配置数据库连接池:
- 访问
https://wiki.yourdomain.com/setup/setupdb-start.action - 选择"PostgreSQL"数据库类型
- 配置连接参数:
- URL :
jdbc:postgresql://postgres:5432/confluence - 用户名 :
confluence - 密码 :从
.env文件中获取
- URL :
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/statushttp://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 版本升级流程
- 停止当前服务
- 备份数据和配置
- 修改
docker-compose.yml中的镜像版本 - 重新启动服务
- 访问
/upgrade页面完成数据库迁移
更多推荐

所有评论(0)