Docker Compose

🐳 多容器编排的行业标准工具

Docker Compose 是定义和运行多容器应用的标准工具,支持依赖管理、健康检查和资源限制,是开发与生产部署的基础设施核心。

收藏
21.5k
安装
5.7k
版本
1.0.0
CLS 安全性认证2026-05-16
点击查看完整报告 >

使用说明

核心用法

Docker Compose 通过 YAML 文件定义多容器应用的服务、网络和存储,实现一键启动完整应用栈。

关键配置模式:

  • 依赖就绪控制depends_on 默认仅等待容器启动,结合 condition: service_healthy 可实现真正的服务就绪等待
  • 健康检查healthcheck 配合 start_period 为慢启动服务(数据库、Java 应用)提供初始化缓冲期
  • 覆盖文件模式:基础配置 + 开发/生产覆盖文件,实现环境隔离
  • Profiles:通过 --profile 按需启用调试工具、测试数据库等可选服务

日常操作陷阱:

  • docker compose down -v永久删除所有卷,生产环境极其危险
  • 匿名卷随 down 销毁,命名卷需显式 -v 才会删除
  • 环境变量优先级:Shell > .env > env_file: > environment:

显著优点

1. 基础设施即代码:版本控制应用拓扑,团队环境一致性
2. 开发生产一致性:同一配置多环境覆盖,减少"在我机器上能跑"

3. 资源前置管控:开发阶段设置内存限制,提前暴露问题

4. 生态标准地位:Docker 官方工具,社区资源最丰富

潜在局限

  • 单机限制:原生不支持多主机编排(需结合 Swarm/Kubernetes)
  • 状态管理复杂:卷生命周期与数据备份策略需人工设计
  • 配置膨胀:大型项目 Compose 文件可达数千行,维护成本上升
  • 健康检查开销:频繁探测对高并发服务可能产生额外负载

适合人群

  • 全栈开发者构建本地开发环境
  • 中小团队的标准化部署(<10 服务)
  • CI/CD 流水线的集成测试阶段
  • 教学与原型验证场景

常规风险

| 风险点 | 说明 |
|--------|------|
| 数据误删 | `-v` 参数习惯性使用导致生产数据丢失 |
| 密钥泄露 | 缺少 `.dockerignore` 将 `.env`、密钥打包入镜像 |
| 资源耗尽 | 未设 limits 的容器耗尽主机内存 |
| 配置漂移 | 多环境覆盖文件管理不当导致生产配置错误 |
| 虚假健康 | 健康检查配置不当,未就绪服务接收流量 |

安全解读

核心用法

Docker Compose 是 Docker 官方的多容器应用编排工具,通过声明式 YAML 配置定义服务、网络和存储。本 Skill 聚焦生产级最佳实践,而非基础语法:

1. 服务启动顺序控制

  • depends_on 仅保证容器启动顺序,不保证服务就绪
  • 必须配合 healthcheck + condition: service_healthy 实现真正的依赖就绪等待
  • start_period 为慢启动服务(数据库、JVM 应用)提供健康检查宽限期

2. 数据安全与生命周期

  • docker compose down -v永久删除命名卷,生产环境绝对慎用
  • 命名卷 vs 匿名卷的生存周期差异:前者跨 down 保留,后者随容器销毁

3. 开发-生产配置分离

  • Override 文件模式:docker-compose.yml(基础)+ docker-compose.override.yml(开发自动加载)+ docker-compose.prod.yml(生产显式指定)
  • profiles 功能隔离可选服务(调试工具、模拟邮件服务等)

4. 构建优化与资源管控

  • .dockerignore 防止敏感文件、依赖目录进入镜像上下文
  • deploy.resources.limits 在开发阶段暴露内存问题,避免生产环境 OOM

5. 环境变量优先级
Shell 环境 > .env 文件 > env_file 指令 > environment 字段。使用 docker compose config 验证最终解析值。

---

显著优点

  • 实践导向:直接解决"服务启动但未就绪""开发配置泄露到生产"等真实痛点
  • 安全意识强:明确警示 -v 参数的数据毁灭性、.dockerignore 的隐私保护价值
  • 工程化成熟:Override 模式、Profiles 机制符合 12-Factor App 理念
  • 来源权威:Docker 官方文档补充,社区广泛验证的最佳实践

潜在局限

  • 非入门教程:需用户已掌握基础 Compose 语法,否则部分术语可能困惑
  • 平台特性未覆盖:未涉及 Swarm 模式、Kubernetes 集成等高级编排场景
  • 健康检查示例单一:仅展示 PostgreSQL 的 pg_isready,其他数据库/服务需自行推导

适合人群

  • 已有 Docker 基础、需要升级工程实践的开发团队
  • 负责 CI/CD 流水线、多环境配置的 DevOps/SRE 工程师
  • 从单容器开发转向微服务本地编排的全栈开发者

常规风险

| 风险点 | 说明 |
|--------|------|
| `-v` 误操作 | 生产环境执行 `down -v` 导致数据永久丢失 |
| 健康检查缺失 | 未配置 `start_period` 导致慢启动服务被误判为不健康 |
| 敏感文件入镜像 | 遗漏 `.dockerignore` 导致 `.env`、密钥泄露 |
| 环境变量覆盖混乱 | 未理解优先级规则导致配置值不符合预期 |

Docker Compose 内容

手动下载zip · 1.6 kB
SKILL.mdtext/markdown
请选择文件