Compose介绍

Compose 是用于定义和运行多容器 Docker 应用程序的工具。 通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

Compose的使用步骤

  • 使用 Dockerfile 定义应用程序的环境。
  • 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
  • 最后,执行 docker-compose up 命令来启动并运行整个应用程序。

简单比喻

在一个服务流程中,Dockerfile就好比一个个掌握独特技能的员工,docker-compose.yml就是协调这些员工进行工作的总管,通过协调各员工之间的合作和联系提供一个完整的服务流程。

举个栗子

#-----------------------------------------------
version: '3.2'
# 声明Compose版本为3.2
#-----------------------------------------------
services:
# 声明所用服务都有啥
#----------------------------------------------
  nginx:
# 这里使用了一个名为nginx的服务
    image: kod-nginx:v1.0
# 这个服务使用的镜像就是kod-nginx:v1.0
    container_name: nginx
# 自定义这个容器的名称为nginx
    volumes:
      - "./www:/data/www"
# 将本地当前目录下的www目录挂载到容器的/data/www目录
      - "./nginx/logs:/var/log/nginx"
      # 将本地nginx/logs目录挂载到容器的/var/log/nginx目录
    ports:
      - "443:443"
# 端口映射:将宿主机的443端口映射到容器的443端口
    restart: always
# 重启策略:容器退出时总是重启
    depends_on:
      - php-fpm
# 依赖关系:nginx服务依赖于php-fpm服务
#-----------------------------------------------
  mysql:
    image: kod-mysql:v1.0
    container_name: mysql
    volumes:
      - "./data/mysql:/var/lib/mysql"
      - "./mysql/logs:/var/lib/mysql-logs"
    ports:
      - "3306:3306"
    restart: always
#-----------------------------------------------
  redis:
    image: kod-redis:v1.0
    container_name: redis
    ports:
      - "6379:6379"
    volumes:
      - "./data/redis:/data"
      - "./redis/redis.conf:/usr/local/etc/redis/redis.conf"
    restart: always
    command: redis-server /usr/local/etc/redis/redis.conf
# 覆盖默认的启动命令,使用自定义配置文件启动Redis
#-----------------------------------------------
  php-fpm:
    image: kod-php:v1.0
    container_name: php-fpm
    ports:
      - "8090:80"
    restart: always
    depends_on:
      - redis
      - mysql