返回首页
科技

Docker Compose 实战:从开发环境到生产部署

凛渊
·

为什么选择 Docker Compose

在单体应用时代,一个 docker run 就能解决部署问题。但现代应用通常是多个服务的组合:Web 服务、数据库、缓存、消息队列...

Docker Compose 让你用一份 YAML 文件定义整个应用栈。

基础配置

一个典型的 Web 应用 Compose 配置:

version: '3.8'

services:
  web:
    build: .
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=postgres://user:pass@db:5432/myapp
    depends_on:
      - db
      - redis

  db:
    image: postgres:16-alpine
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=pass
      - POSTGRES_DB=myapp

  redis:
    image: redis:7-alpine
    volumes:
      - redis_data:/data

volumes:
  postgres_data:
  redis_data:

开发环境优化

开发环境和生产环境的需求不同。用 override 文件实现环境隔离:

# docker-compose.override.yml(仅开发环境生效)
services:
  web:
    volumes:
      - .:/app          # 热重载
      - /app/node_modules
    command: npm run dev

生产部署

生产环境建议:

  1. 使用 health check:确保服务真正就绪
  2. 资源限制:防止单个容器吃光资源
  3. 日志管理:集中收集和轮转
  4. 网络隔离:不同环境用不同网络
services:
  web:
    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: 512M
      restart_policy:
        condition: on-failure
        max_attempts: 3
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
      interval: 30s
      retries: 3

总结

Docker Compose 是连接开发和运维的桥梁。掌握它,能让你的部署流程更标准化、更可重复。

DockerDevOpsCI/CD容器化

评论 (0)

登录 后即可发表评论