全书目录

第十篇:Docker 完全指南 —— 国际港口集装箱宇宙

第十一章:Compose —— 一张调度总表,指挥一整个货柜编队

2 分钟 513 字 第 157 / 962 个阅读单元

单个 docker run 适合:

  • 临时试验
  • 单容器
  • 命令行演示

但真实项目通常至少有:

  • Web
  • API
  • PostgreSQL
  • Redis
  • Nginx

这时候再手写五条 docker run,就开始乱了。

Docker Compose 的意义就是:

用一份 compose.yaml,定义和运行多容器应用。

Docker 官方文档当前明确推荐:

  • Compose 作为 Docker CLI 插件使用
  • 使用 docker compose ...
  • Compose 文件格式以 Compose Specification 为推荐标准
#1. 最小例子
yaml
services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      NODE_ENV: production
    depends_on:
      - db
      - redis

  db:
    image: postgres:17
    environment:
      POSTGRES_PASSWORD: secret
    volumes:
      - pgdata:/var/lib/postgresql/data

  redis:
    image: redis:8

volumes:
  pgdata:
#2. 启动
bash
docker compose up -d --build

Docker 官方 CLI 文档明确说明:

  • docker compose up 会创建并启动服务
  • 必要时也会启动依赖服务
  • 配置变化后会重建相关容器
  • 已挂载的 volume 会保留
#3. Compose 帮你干了什么
text
compose.yaml
│
├── services   定义有哪些货柜
├── volumes    定义独立仓储
├── networks   定义内部航线
└── configs / secrets 等扩展配置
#4. 默认文件名和搜索行为

Docker 官方文档说明:

如果你不显式传 -f,Compose 会在当前目录及父目录查找:

  • compose.yaml
  • docker-compose.yaml

这也是为什么很多项目直接把 compose.yaml 放在根目录。