# DockerCompose使用

Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。它使用YAML文件来定义应用程序的服务、网络、存储卷等配置,并提供简化的命令来启动、停止和管理这些容器

# 文件示例

version: '3'

services:
  web:
    build: .
    ports:
      - 8080:80
    volumes:
      - ./app:/app
    depends_on:
      - db

  db:
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=secret
      - MYSQL_DATABASE=myapp
      - MYSQL_USER=user
      - MYSQL_PASSWORD=password
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:

# 文件结构

  1. version: 指定 Docker Compose 文件的版本。当前常用的版本有 1、2、2.1、3、3.1 等,每个版本支持不同的语法和功能。

  2. services: 定义了要运行的服务列表,每个服务都有自己的配置。

    • webdb 是服务的名称。
    • build(可选): 指定 Dockerfile 的路径,用于构建镜像。在示例中,使用当前目录下的 Dockerfile 进行构建。
    • image(可选): 指定要使用的镜像名称。在示例中,使用官方的 MySQL 5.7 镜像。
    • ports(可选): 定义端口映射关系。示例中将容器内的 80 端口映射到主机的 8080 端口。
    • volumes(可选): 定义文件或目录的挂载关系。示例中将主机的 ./app 目录挂载到容器的 /app 路径,以便在容器内访问该目录。
    • depends_on(可选): 定义服务之间的依赖关系。示例中,web 服务依赖于 db 服务,确保 db 服务在 web 服务启动之前启动。
    • environment(可选): 定义容器的环境变量。示例中设置了 MySQL 的 root 密码、数据库名、用户名和密码。
  3. volumes: 定义命名卷,用于持久化存储数据。示例中定义了一个名为 db_data 的命名卷。