Docker Compose

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它通过一个简单的 YAML 文件(通常命名为 docker-compose.yml)来配置应用程序的服务、网络、卷等,从而简化多容器环境的部署和管理。


核心功能

  1. 多容器编排
    允许在单个文件中定义多个容器(如 Web 服务、数据库、缓存等),并通过一条命令启动所有服务。
  2. 声明式配置
    使用 YAML 文件描述应用程序的架构(服务依赖、端口映射、环境变量、数据卷等),避免手动输入冗长的 docker run 命令。
  3. 一键启停
    • 启动所有服务:docker-compose up
    • 停止并清理:docker-compose down
  4. 环境隔离
    支持为不同环境(开发、测试、生产)定义独立的配置文件(如 docker-compose.prod.yml)。

核心概念

  • 服务(Service):一个容器化的应用(如 nginxmysql)。
  • 项目(Project):由一组关联服务组成的完整应用,默认以当前目录名作为项目名(可通过 -p 指定)。
  • YAML 配置:定义服务、网络、卷等。例如:
services:
    web:
      image: nginx
      ports:
        - "80:80"
    db:
      image: mysql:8.0
      container_name: mysql80
      environment:
        MYSQL_ROOT_PASSWORD: "123456"  # 设置 root 密码
        MYSQL_DATABASE: "my_wp"      # 可选:初始化数据库
        MYSQL_USER: "user"             # 可选:创建普通用户
        MYSQL_PASSWORD: "user123"      # 可选:普通用户密码
      ports:
        - "3306:3306"                  # 映射宿主机 3306 → 容器 3306
      volumes:
        - mysql_data:/var/lib/mysql    # 持久化数据
        - ./schema.sql:/docker-entrypoint-initdb.d/01-schema.sql # 初始化脚本
      restart: unless-stopped          # 自动重启

volumes:
  mysql_data:                        # 定义数据卷

常用命令

命令作用
docker-compose up启动所有服务(-d 后台运行)
docker-compose down停止并删除容器、网络
docker-compose ps查看运行中的服务
docker-compose logs查看日志
docker-compose build重新构建镜像
docker-compose exec进入容器(如 exec web bash

适用场景

  • 本地开发:快速搭建包含依赖服务(如数据库、消息队列)的环境。
  • CI/CD 测试:在流水线中一键启动测试环境。
  • 微服务演示:简化多服务应用的部署。

与 Docker 的区别

工具适用场景复杂度
docker单容器操作
docker-compose多容器编排
Kubernetes大规模集群管理

示例:启动一个 WordPress 项目

version: '3.8'
services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: password
  wordpress:
    image: wordpress
    ports:
      - "8000:80"
    depends_on:
      - db

运行:docker-compose up -d,WordPress 将在 http://localhost:8000 可用。


总结:Docker Compose 是开发者和中小型项目快速编排多容器应用的首选工具,但对于生产环境的大规模部署,可能需要更强大的工具(如 Kubernetes)。

滚动至顶部