如何在 CI/CD 流水线中自动化执行 Docker Compose 部署

文章导读
在 CI/CD 流水线中集成 Docker Compose,最适合需要同时管理多个容器服务(如应用 + 数据库)的中小型项目,能通过单一配置文件保证环境一致性。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 参考来源
A A

在 CI/CD 流水线中集成 Docker Compose,最适合需要同时管理多个容器服务(如应用 + 数据库)的中小型项目,能通过单一配置文件保证环境一致性。

先说结论:使用 Docker Compose 可以简化多服务编排,但需确保流水线服务器已安装 Docker 引擎且权限配置正确。

  • 适合:多容器依赖的中小型项目自动化部署
  • 先准备:确认 CI/CD runner 具备 Docker 执行权限
  • 验收:检查容器运行状态及服务端口连通性

命令速用版

docker-compose up -d `--build`
docker-compose down

为什么会这样

Docker Compose 的核心价值在于环境一致性。开发、测试和生产环境均基于同一 docker-compose.yml 配置,避免“开发能跑、测试报错”的情况。在流水线中,它承担“环境模拟 + 服务部署”角色,自动化处理应用与依赖服务的启动顺序和网络配置。

分步处理

1. 环境准备:在构建服务器上安装 Docker 和 Docker Compose。若使用 Jenkins 容器化部署,需挂载 Docker.sock 文件或安装 Docker 客户端,确保容器内能调用宿主机 Docker 引擎。

如何在 CI/CD 流水线中自动化执行 Docker Compose 部署

2. 编写编排文件:创建 docker-compose.yml,定义服务、镜像、端口和卷。对于包含 build 指令的服务,Compose 引擎会根据上下文路径和 Dockerfile 构建镜像。

3. 配置流水线:在 Jenkins 或 GitLab CI 配置文件中添加构建步骤。Jenkins 中可生成 API Token 配合 Gitlab Webhooks 触发构建;GitLab CI 则直接在.gitlab-ci.yml 中定义脚本。

4. 执行部署:流水线触发后,执行构建命令。若未指定 Dockerfile,将默认使用上下文目录下的 Dockerfile 文件。构建完成后,Compose 会自动替换旧容器并启动新实例。

怎么验证是否生效

执行docker ps查看容器状态是否为 Up。通过docker-compose logs检查服务日志是否有报错。访问映射的服务端口,确认业务接口返回正常。

如何在 CI/CD 流水线中自动化执行 Docker Compose 部署

常见坑

1. 权限问题:Jenkins 容器内用户需加入 docker 组,避免频繁使用 sudo 带来的权限问题。

2. 镜像清理:长期运行后可能积累大量悬空镜像,建议在流水线末尾添加清理命令。

3. 网络冲突:多服务协同时需注意网络配置,自动化处理应用与依赖服务的启动顺序,无需人工干预。

参考来源

  • Docker Compose CI/CD 集成完全指南:自动化构建、测试与部署-CSDN 博客
  • 从零搭建 Docker + Jenkins CI/CD 流水线:实现项目自动化构建与部署
  • CI/CD 流水线中 docker-compose up `--build` 的正确打开方式,资深架构师绝不外传的 3 大技巧-CSDN 博客
  • Spring Boot 应用的 GitLab CI/CD Docker 部署全过程