Confluence Docker 一键部署项目

目标:通过脚本和 Docker Compose 部署一个 HTTP 访问的 Confluence 10.2.11 LTS,并保证重复执行部署不会破坏已有数据。

github地址:https://github.com/MyUseSkills/ConfluenceDockerDeploy

快速开始

这是一个 Confluence Docker one-click deployment 项目。部署脚本是 idempotent 的:重复运行 scripts/deploy.sh 会检查环境、补齐缺失目录、渲染 Nginx 配置并执行 docker compose up -d,但 does not overwrite existing data

目录结构

confluence-docker-deploy/
├── .env.example
├── docker-compose.yml
├── README.md
├── scripts/
│   ├── backup.sh
│   ├── deploy.sh
│   └── status.sh
├── templates/
│   └── nginx/
│       └── confluence.conf.template
└── tests/
    └── test_project_structure.ps1

首次部署:

cd confluence-docker-deploy
chmod +x scripts/*.sh
CONFLUENCE_DOMAIN=wiki.example.com ./scripts/deploy.sh

如果不传 CONFLUENCE_DOMAIN,脚本会从 .env.example 生成 .env,默认域名是 wiki.example.com。生产环境请把它改成真实域名后再开放访问。

部署完成后访问:

http://wiki.example.com

脚本做了什么

scripts/deploy.sh 按顺序执行:

  1. 检查 dockerdocker composeopensslsed
  2. 如果 .env 不存在,从 .env.example 创建,并自动生成 PostgreSQL 密码
  3. 如果 .env 已存在,保留不改
  4. 创建 data/backups/logs/ 等目录
  5. 渲染 data/nginx/conf.d/confluence.conf
  6. 拉取镜像
  7. 执行 docker compose up -d

部署日志写入:

logs/deploy-YYYY-MM-DD-HHMMSS.log

幂等和数据保护

重复运行部署脚本时:

对象 行为
.env 已存在则不覆盖
data/confluence-home 已存在则保留
data/postgres-data 已存在则保留
容器 docker compose up -d 对齐配置

核心数据都在 data/ 下:

data/confluence-home/
data/postgres-data/
data/nginx/

不要删除这些目录。已有数据的环境再次一键部署,不会清空 PostgreSQL 数据,也不会删除 Confluence 附件和配置。


配置项

主要配置在 .env

变量 默认值 说明
CONFLUENCE_IMAGE atlassian/confluence:10.2.11 Confluence LTS 镜像
POSTGRES_IMAGE postgres:17 PostgreSQL 镜像
NGINX_IMAGE nginx:stable-alpine Nginx 镜像
CONFLUENCE_DOMAIN wiki.example.com Confluence 访问域名
POSTGRES_PASSWORD 自动生成 PostgreSQL 密码
JVM_MAXIMUM_MEMORY 6144m Confluence JVM 最大内存

修改 .env 后重新运行:

./scripts/deploy.sh
看到如下信息说明部署完成:

[2026-05-29 09:21:07] Step 7/7: Starting services
 Network confluence_confluence-net  Creating
 Network confluence_confluence-net  Created
 Container confluence-postgres  Creating
 Container confluence-postgres  Created
 Container confluence  Creating
 Container confluence  Created
 Container confluence-nginx  Creating
 Container confluence-nginx  Created
 Container confluence-postgres  Starting
 Container confluence-postgres  Started
 Container confluence-postgres  Waiting
 Container confluence-postgres  Healthy
 Container confluence  Starting
 Container confluence  Started
 Container confluence-nginx  Starting
 Container confluence-nginx  Started
NAME                  IMAGE                          COMMAND                  SERVICE      CREATED          STATUS                                     PORTS
confluence            atlassian/confluence:10.2.11   "/usr/bin/tini -- /e…"   confluence   12 seconds ago   Up Less than a second (health: starting)   127.0.0.1:8090->8090/tcp, 8091/tcp
confluence-nginx      nginx:stable-alpine            "/docker-entrypoint.…"   nginx        12 seconds ago   Up Less than a second                      0.0.0.0:80->80/tcp, :::80->80/tcp
confluence-postgres   postgres:17                    "docker-entrypoint.s…"   postgres     12 seconds ago   Up 11 seconds (healthy)                    5432/tcp
[2026-05-29 09:21:21] Deployment finished
[2026-05-29 09:21:21] Open http://wiki.example.com to finish Confluence setup

日常运维

查看状态:

./scripts/status.sh

查看容器:

docker compose ps

查看日志:

docker logs -f confluence
docker logs -f confluence-postgres
docker logs -f confluence-nginx

重启 Confluence:

docker compose restart confluence

备份

执行冷备份:

./scripts/backup.sh

备份脚本会:

  1. 停止 Confluence 容器
  2. 使用 pg_dump 导出 PostgreSQL
  3. 打包 data/confluence-homedata/nginx.envdocker-compose.yml
  4. 重启 Confluence
  5. BACKUP_RETENTION_DAYS 清理旧备份

备份输出在:

backups/YYYY-MM-DD-HHMMSS/

建议把 backups/ 同步到另一台机器或对象存储。


升级

升级前先备份:

./scripts/backup.sh

然后修改 .env 中的 CONFLUENCE_IMAGE,例如:

CONFLUENCE_IMAGE=atlassian/confluence:10.2.x

重新部署:

./scripts/deploy.sh

不要只回滚镜像。Confluence 升级可能修改数据库 schema;如果升级失败,需要同时恢复数据库和 data/confluence-home


自检

在 Windows 工作站上可以运行项目结构检查:

powershell -ExecutionPolicy Bypass -File .\tests\test_project_structure.ps1

该检查只做静态验证,不会启动 Docker,也不会改动数据。

最后修改:2026 年 05 月 29 日
如果觉得我的文章对你有用,请随意赞赏