Docker Compose:多容器应用编排

Docker Compose 是用于定义和运行多容器 Docker 应用程序的工具,通过 YAML 文件配置服务依赖关系,实现一键部署。以下是核心要点:

核心概念
  1. 服务 (Service)
    每个容器定义为一个服务,例如 Web 服务器、数据库等。
  2. 项目 (Project)
    由关联服务组成的完整应用,通过docker-compose.yml文件描述。
  3. 编排机制
    自动处理容器间网络、存储卷和启动顺序。
工作流程
  1. 编写配置文件
    用 YAML 定义服务、网络和卷:
    version: '3.8'
    services:
      web:
        image: nginx:alpine
        ports:
          - "80:80"
      db:
        image: postgres:13
        environment:
          POSTGRES_PASSWORD: example
    

  2. 启动应用
    docker-compose up -d  # 后台运行
    

  3. 管理操作
    docker-compose ps     # 查看状态
    docker-compose stop   # 停止服务
    docker-compose down   # 删除资源
    

关键优势
  • 依赖管理:自动处理服务启动顺序(通过depends_on字段)。
  • 环境隔离:每个项目独立网络,避免端口冲突。
  • 配置复用:YAML 文件可版本控制,实现环境一致性。
典型应用场景
  1. Web 应用 + 数据库
    services:
      frontend:
        build: ./frontend  # 构建Dockerfile
        ports: ["3000:3000"]
      backend:
        build: ./backend
        environment:
          DB_HOST: db
      db:
        image: mysql:8.0
        volumes:
          - db_data:/var/lib/mysql
    volumes:
      db_data:  # 持久化存储
    

  2. 微服务架构
    协调多个独立服务(如 API 网关、认证服务、日志系统)。
最佳实践
  • 使用.env文件管理环境变量:
    # .env 文件
    POSTGRES_VERSION=13
    

  • 限制资源占用:
     services:
       app:
         deploy:
           resources:
             limits:
               cpus: '0.5'
               memory: 512M
    

注意:Docker Compose 适用于开发、测试和单机部署;生产环境推荐结合 Kubernetes 或 Swarm 实现集群编排。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐