DevOps
精选

Docker Compose 从入门到实践

站长发布于 2026/08/16更新于 2026/09/171838 次阅读

为什么需要 Docker Compose

日常项目中,一个应用往往依赖多个服务:数据库、缓存、反向代理。手动 docker run 逐个启动不仅繁琐,还容易出错。Docker Compose 用一个 YAML 文件声明整组服务,一条命令完成编排:

docker compose up -d      # 后台启动全部服务
docker compose logs -f    # 跟踪日志
docker compose down       # 停止并清理

核心配置示例

一个典型的 Web + PostgreSQL + Nginx 架构:

services:
  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_PASSWORD: "DB_PASSWORD"
    volumes:
      - pg_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 10s

  app:
    build: .
    depends_on:
      db:
        condition: service_healthy

  nginx:
    image: nginx:1.27-alpine
    ports:
      - "80:80"
    depends_on:
      - app

volumes:
  pg_data:

关键要点

  1. depends_on + healthcheck:保证启动顺序,避免应用连不上数据库。
  2. 命名卷(volumes):持久化数据,docker compose down 不会删除。
  3. 环境变量插值:敏感信息放 .env,不要写死在文件里。
  4. 仅暴露入口:内网服务不写 ports,通过服务名互访(内置 DNS)。

常用命令速查

命令说明
docker compose up -d --build重新构建并启动
docker compose ps查看服务状态
docker compose exec app sh进入容器
docker compose logs -f app跟踪某服务日志

小结

Compose 是本地开发与单机部署的利器。记住三板斧:声明式配置、健康检查、数据卷持久化,就能覆盖绝大多数场景。