SorryToPerson logo
返回
Docker2026-04-15·8 分钟

Docker Compose 进阶

介绍 Docker Compose 的高级特性、依赖管理、变量配置和多环境实践。

Docker Compose 进阶

1. 多文件组合

bash
docker compose -f docker-compose.yml -f docker-compose.override.yml up -d
  • 通过多个 Compose 文件覆盖基础配置。
  • 可为开发、测试、生产分别定义文件。

2. 环境变量与变量替换

yaml
services:
  web:
    image: '${WEB_IMAGE:-nginx:latest}'
    environment:
      - NODE_ENV=${NODE_ENV}
  • env_file.env 支持变量注入。
  • 推荐使用 .env.example 提供默认示例。

3. 依赖控制

yaml
services:
  app:
    depends_on:
      - db
  • depends_on 只保证启动顺序,不保证服务就绪。
  • 需要在应用层加健康检查逻辑。

4. 升级和回滚

bash
docker compose pull
docker compose up -d
  • 先拉取最新镜像再重新创建服务。
  • 可用 docker compose downdocker compose up 实现平滑更新。

5. 共享网络与自定义网络

yaml
networks:
  app-net:
    driver: bridge

services:
  web:
    networks:
      - app-net
  • Compose 默认创建网络,但自定义网络可实现跨项目复用。

6. 绑定卷与数据持久化

yaml
volumes:
  db-data:

services:
  db:
    volumes:
      - db-data:/var/lib/postgresql/data
  • 使用命名卷存储数据库和持久化数据。
  • 生产环境应避免将宿主机相对路径直接挂载到关键目录。

7. 进阶配置项

  • healthcheck:服务就绪检测。
  • restart:容器重启策略。
  • logging:日志驱动与选项。
  • profiles:按环境启用不同服务。
yaml
services:
  debug:
    image: busybox
    command: sleep 3600
    profiles:
      - debug

8. 诊断与日志

bash
docker compose logs -f
docker compose ps
docker compose top
  • docker compose logs -f 实时查看所有服务日志。
  • docker compose ps 检查服务状态。
DockerCompose进阶