Compose 编排怎么实现蓝绿部署与零停机发版

浅宇吖_4778

浅宇吖_4778

2026-08-30

772人浏览

原创

蓝绿部署通过两套隔离的 docker compose 服务(blue/green)并行运行,借助 nginx 动态切换 upstream 实现零停机发布;需端口隔离、健康检查、兼容性验证及保留旧实例等关键保障措施。

compose 编排怎么实现蓝绿部署与零停机发版

Compose 编排实现蓝绿部署,核心是用两套隔离的服务(blue 和 green)并行运行,再通过 Nginx 反向代理动态切换 upstream,不依赖 Kubernetes 或复杂网关,就能完成零停机发版。它轻量、可复现,特别适合开发测试、CI/CD 验证或中小规模单机/边缘部署场景。

准备两套独立服务实例

在 docker-compose.yml 中定义两个服务块,命名明确区分版本,例如:

  • app-blue:运行旧版本镜像(如 myapp:v1.2),监听宿主机端口 8081
  • app-green:运行新版本镜像(如 myapp:v1.3),监听宿主机端口 8082

两者共用同一网络(如 app-network),但彼此无依赖、不共享卷或环境变量,确保配置与数据完全隔离。健康检查建议启用,例如:

healthcheck:
  test: ["CMD", "curl", "-f", "http://localhost:8080/healthz"]
  interval: 10s
  timeout: 3s
  retries: 3

用 Nginx 做流量入口与动态切换

Nginx 不只是静态反代,而是作为“流量开关”:它的 upstream 指向当前生效的后端服务。典型做法是:

Docker Cli
Docker Cli

使用 Docker CLI 构建、运行、停止、检查和管理容器与镜像的助手。用于执行容器相关任务。

下载
  • 将 Nginx 配置挂载为外部文件(如 ./nginx/conf.d/app.conf)
  • 配置中定义两个 upstream:upstream app_blue { server app-blue:8080; } 和 upstream app_green { server app-green:8080; }
  • 主 server 块默认 proxy_pass http://app_blue;(即初始走 blue)

切换时只需修改配置文件中的 proxy_pass 行,然后执行 docker exec nginx nginx -s reload ——Nginx 会平滑重载,连接不中断,毫秒级生效。

配套自动化脚本保障可靠切换

人工改配置易出错,推荐用简单 Shell 脚本封装流程:

  • deploy-green.sh:先 docker-compose up -d app-green 启动新实例 → 等待健康检查就绪(可用 curl 轮询 /healthz)→ 替换 Nginx 配置中 proxy_pass 指向 app_green → 重载 Nginx
  • rollback-to-blue.sh:同理切回 app_blue,同样重载

脚本中加入超时和失败退出逻辑(如 60 秒内 green 未就绪则中止),避免半途而废导致服务异常。

关键注意事项

零停机不是自动发生的,几个细节必须卡住:

  • 端口不能冲突:blue/green 容器内部都用 8080,但映射到宿主机必须不同(如 8081:8080 / 8082:8080),否则 docker-compose up 会报错
  • 数据库与状态需兼容:蓝绿是并行运行,若新版本写了不兼容的数据库字段或缓存结构,切流后旧版可能读取异常 —— 切换前务必验证双向读写兼容性
  • 不要直接删旧服务:blue 实例在 green 上线后应保留至少一小时,确认无错误日志、监控指标稳定后再执行 docker-compose rm -f app-blue
  • 外部调用方感知:如果其他服务直连你的 Compose 应用(非通过 Nginx),需统一走域名或 VIP,避免硬编码 IP+端口

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

docker

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

0

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

0

15

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

200

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

120

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

100

15

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

2026.09.22

60

12

Conan二进制包配置指南
Conan二进制包配置指南

本专题介绍Conan根据操作系统、编译器、架构和构建类型生成二进制包的方法,讲解Profile、Settings、Options及Package ID的作用,帮助管理不同平台和编译环境下的包版本。

2026.09.22

80

13

Conan私有仓库搭建教程
Conan私有仓库搭建教程

本专题系统的讲解Conan私有仓库的搭建流程,涵盖仓库服务部署、存储目录配置、用户认证、权限划分和远程地址添加,并介绍内部C++依赖包的上传、下载及版本维护方法。

2026.09.22

60

19

loomy官网入口地址合集
loomy官网入口地址合集

本专题汇总了 Loomy 桌面 AI 助理的官方入口地址合集及使用指南。提供 macOS 与 Windows 客户端下载 。Loomy 是讯飞推出的桌面级 AI 工作搭子,支持文件整理、数据分析、网页操作及通过飞书/钉钉远程操控电脑,助你高效完成本地办公任务 。

2026.09.22

80

19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

Docker 官方文档
Docker 官方文档

共0课时 | 0人学习

宝塔 Docker 模块使用手册
宝塔 Docker 模块使用手册

共0课时 | 0人学习