从一次简单的
docker compose up -d,到一套可靠的生产发布流程设计。
Docker Compose 在中小型项目中非常常见,但直接执行 docker compose up -d时,旧容器停止、新容器启动、应用初始化和数据库迁移之间可能存在不可用窗口。
蓝绿发布通过同时维护 Blue 和 Green 两套环境,把发布过程拆成:
启动新环境 → 健康检查 → 流量切换 → 观察 → 清理旧环境。

蓝绿发布(Blue-Green Deployment)的核心:
同时维护两套运行环境,但任意时间只有一套承接线上流量。
Blue 表示当前生产环境,Green 表示待发布的新版本。
发布步骤:
示例:
services:
app-blue:
image: registry.example.com/my-app
environment:
RELEASE_COLOR: blue
ports:
- "127.0.0.1:18081:8080"
app-green:
image: registry.example.com/my-app
environment:
RELEASE_COLOR: green
ports:
- "127.0.0.1:18082:8080"
两个环境分别运行:
蓝绿发布真正切换的是入口,而不是容器。
切换前:
用户
|
Nginx
|
Blue :18081
切换后:
用户
|
Nginx
|
Green :18082
Nginx upstream:
upstream app_backend {
server 127.0.0.1:18081;
}
修改为:
upstream app_backend {
server 127.0.0.1:18082;
}
然后:
nginx -t
nginx -s reload

蓝绿发布最大的风险来自数据库。
推荐采用 Expand-Migrate-Contract:
蓝绿发布不能自动解决数据库不兼容问题。
如果新版本异常,只需要恢复旧 upstream:
upstream app_backend {
server 127.0.0.1:18081;
}
然后:
nginx -t
nginx -s reload
即可恢复旧版本。
Docker Compose 配合 Nginx,同样可以实现可靠的生产发布:
启动备用环境
↓
健康检查
↓
切换流量
↓
业务验证
↓
清理旧环境
核心思想:
不替换正在运行的环境,而是先准备好新的环境,再切换流量。
暂无评论,欢迎第一个留言。
评论