Docker Compose 多容器编排实战指南

Docker Compose 多容器编排实战指南

admin
2026-07-23 / 0 评论 / 1 阅读

前言

Docker Compose 是定义和运行多容器 Docker 应用的工具。本文通过一个完整的 Web 应用示例,讲解 Compose 的核心用法和最佳实践。

一、项目结构

myapp/
├── docker-compose.yml
├── nginx/
│   └── default.conf
├── php/
│   └── Dockerfile
├── src/
│   └── index.php
└── mysql/
    └── init.sql

二、完整的 LNMP 编排

version: "3.8"

services:
  nginx:
    image: nginx:1.25-alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./src:/var/www/html
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php
    restart: unless-stopped
    networks:
      - app-network

  php:
    build:
      context: ./php
      dockerfile: Dockerfile
    volumes:
      - ./src:/var/www/html
    environment:
      - DB_HOST=mysql
      - DB_NAME=myapp
      - DB_USER=root
      - DB_PASS=secret
    networks:
      - app-network

  mysql:
    image: mysql:8.0
    ports:
      - "3306:3306"
    volumes:
      - mysql-data:/var/lib/mysql
      - ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: myapp
    networks:
      - app-network

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"
    volumes:
      - redis-data:/data
    networks:
      - app-network

volumes:
  mysql-data:
  redis-data:

networks:
  app-network:
    driver: bridge

三、常用命令

# 启动所有服务
docker-compose up -d

# 查看运行状态
docker-compose ps

# 查看日志
docker-compose logs -f nginx

# 重新构建
docker-compose build --no-cache php

# 停止并删除容器
docker-compose down

# 停止并删除容器和数据卷
docker-compose down -v

四、进阶技巧

4.1 健康检查

mysql:
  image: mysql:8.0
  healthcheck:
    test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
    interval: 10s
    timeout: 5s
    retries: 3
    start_period: 30s

4.2 资源限制

php:
  build: ./php
  deploy:
    resources:
      limits:
        cpus: "2"
        memory: 512M
      reservations:
        memory: 256M

4.3 按需启动依赖

php:
  depends_on:
    mysql:
      condition: service_healthy
    redis:
      condition: service_started

五、总结

Docker Compose 让多容器应用的定义、运行和管理变得简单。通过合理的目录结构、网络隔离、数据卷管理和健康检查,可以构建出生产级的容器编排方案。

0

评论 (0)

取消
0:00