docker compose 通过声明式 docker-compose.yml 实现多容器编排,统一管理服务依赖、网络、数据卷及生命周期;支持一键启停、多环境配置、动态伸缩与基于健康检查的可靠依赖。

Docker Compose 实现多容器高效编排,核心在于用一份声明式配置替代手动逐条命令,把服务依赖、网络互通、数据持久和生命周期控制全部收束到 docker-compose.yml 中,再通过一条命令统一调度。
用 YAML 文件定义完整应用拓扑docker-compose.yml 是整个编排的“蓝图”。它不只是罗列容器,而是结构化描述服务间关系:
-
services下每个条目是一个服务(如web、db、redis),可指定镜像、构建路径、端口映射、环境变量、健康检查等 -
depends_on声明启动顺序(例如web依赖db),配合condition: service_healthy可真正等待数据库就绪,而非仅启动完成 -
networks默认自动创建专属桥接网络,所有服务通过服务名直接通信(如http://db:5432),无需额外配置或--link -
volumes显式声明数据卷,确保数据库、上传文件等关键数据不随容器销毁而丢失
一键启停与精准控制
执行 docker compose up -d 即可并行拉取镜像、创建网络、启动全部服务,并按依赖顺序协调就绪状态。对应地:
-
docker compose down清理容器和网络(默认保留 volume) -
docker compose down -v彻底清除包括数据卷(慎用) -
docker compose ps查看各服务运行状态 -
docker compose logs -f web实时追踪指定服务日志 -
docker compose exec web sh进入容器调试
支持多环境与动态伸缩
避免为开发、测试、生产反复改配置:
- 利用
.env文件集中管理密码、端口、域名等变量,在 YAML 中用${APP_PORT}引用 - 使用
docker-compose.override.yml覆盖开发专属配置(如源码挂载、热重载),默认加载;生产则用-f指定组合文件:docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d - 通过
--scale web=3快速启动多个相同实例,适合压测或模拟集群场景
让依赖真正可靠depends_on 本身只控制启动顺序,不保证服务可用。要实现“等数据库能连上再启动应用”,必须配合健康检查:
db:
image: postgres:15
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
web:
depends_on:
db:
condition: service_healthy
不复杂但容易忽略。











