Docker Compose 多容器部署:构建完整的应用编排方案

Docker Compose 是定义和运行多容器 Docker 应用的工具。通过一个 YAML 文件,你可以配置整个应用栈。

一、基本用法

version: '3.8'

services:
  web:
    build: .
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=development
    depends_on:
      - db
      - redis

  db:
    image: postgres:16
    volumes:
      - postgres-data:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: myapp
      POSTGRES_PASSWORD: secret

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"

volumes:
  postgres-data:

二、网络配置

services:
  frontend:
    networks:
      - frontend
      - backend

  api:
    networks:
      - backend

  db:
    networks:
      - backend

networks:
  frontend:
  backend:

三、环境管理

# docker-compose.override.yml (开发环境)
services:
  web:
    environment:
      - DEBUG=true
    volumes:
      - .:/app

# docker-compose.prod.yml (生产环境)
services:
  web:
    environment:
      - NODE_ENV=production
      - DEBUG=false
# 开发环境
docker compose up

# 生产环境
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d

四、健康检查

services:
  web:
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
      interval: 30s
      timeout: 10s
      retries: 3

五、常用命令

docker compose up -d         # 后台启动
docker compose down          # 停止并移除
docker compose logs -f       # 查看日志
docker compose build         # 构建镜像
docker compose exec web sh   # 进入容器
docker compose restart web   # 重启服务

六、生产最佳实践

  1. 使用 .env 文件管理环境变量
  2. 配置资源限制(CPU/内存)
  3. 设置 restart 策略
  4. 使用命名卷持久化数据
  5. 不要在容器中存储敏感信息硬编码