Docker Compose 的核心价值是通过单个 docker-compose.yml 文件在单机上声明式编排多个容器,自动处理网络、卷、依赖等,实现一键启停、环境一致与可复现。

Docker Compose 的核心价值,就是在单机上用一份 YAML 文件把多个容器“说清楚、管起来”,不用反复敲 docker run,也不用自己手动建网络、挂卷、设环境变量。
写一个清晰的 docker-compose.yml
这是整个编排的起点。文件名默认是 docker-compose.yml,放在项目根目录下。关键部分包括:
-
version:指定 Compose 文件格式版本,推荐用
'3.8'或更新的'2.23'(兼容性好、功能全) -
services:定义每个服务,比如
web、db、redis;每个服务下可写image或build、端口映射、环境变量、依赖关系(depends_on)、健康检查等 -
networks:可显式定义一个自定义桥接网络(如
app-network),所有服务默认加入其中,天然互通 - volumes:声明数据卷,用于持久化数据库、日志或配置文件
示例片段:
version: '3.8'
services:
web:
image: nginx:alpine
ports: ["8080:80"]
depends_on: [db]
networks: [app-network]
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root123
volumes: [mysql-data:/var/lib/mysql]
networks: [app-network]
volumes:
mysql-data:
networks:
app-network:
driver: bridge
一键启动整套服务
在 docker-compose.yml 所在目录下执行:
-
docker compose up -d:后台启动全部服务(注意是docker compose,不是旧版docker-compose;新版已集成进 Docker CLI) -
docker compose logs -f:实时查看所有服务日志,方便调试 -
docker compose ps:列出当前运行的容器状态
它会自动按依赖顺序拉取镜像、创建网络、挂载卷、启动容器——depends_on 确保 db 先于 web 启动,但不等待数据库“就绪”;如需真正等待服务可用,需配合健康检查 + condition: service_healthy。
按需扩展与管理实例
同一个服务可以快速跑多个副本,适合测试或轻量负载场景:
- 启动时指定副本数:
docker compose up -d --scale web=3 - 运行中动态调整:
docker compose up -d --scale web=5,Compose 会自动增删容器保持数量准确 - 单独重启某服务:
docker compose restart redis - 停全部服务:
docker compose down(默认同时清理网络和匿名卷;加-v可删命名卷)
保持环境一致性和可复现性
把 docker-compose.yml 连同 Dockerfile、配置文件一起纳入代码仓库,就能做到:
- 开发、测试、CI 流水线使用同一份配置,避免“在我机器上是好的”问题
- 新人克隆项目后,只需
docker compose up就能跑起完整后端环境 - 修改配置只需改 YAML,无需记一堆命令参数;版本控制也更直观


















