单个 docker run 适合:
- 临时试验
- 单容器
- 命令行演示
但真实项目通常至少有:
- Web
- API
- PostgreSQL
- Redis
- Nginx
这时候再手写五条 docker run,就开始乱了。
Docker Compose 的意义就是:
用一份 compose.yaml,定义和运行多容器应用。
Docker 官方文档当前明确推荐:
- Compose 作为 Docker CLI 插件使用
- 使用
docker compose ... - Compose 文件格式以 Compose Specification 为推荐标准
#1. 最小例子
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. 启动
docker compose up -d --buildDocker 官方 CLI 文档明确说明:
docker compose up会创建并启动服务- 必要时也会启动依赖服务
- 配置变化后会重建相关容器
- 已挂载的 volume 会保留
#3. Compose 帮你干了什么
compose.yaml
│
├── services 定义有哪些货柜
├── volumes 定义独立仓储
├── networks 定义内部航线
└── configs / secrets 等扩展配置#4. 默认文件名和搜索行为
Docker 官方文档说明:
如果你不显式传 -f,Compose 会在当前目录及父目录查找:
compose.yamldocker-compose.yaml
这也是为什么很多项目直接把 compose.yaml 放在根目录。