docker-compose配置文件解析

docker-compose配置文件解析

我们在把服务docker化的时候,不仅需要把各个服务做成docker镜像,还需要编辑各个服务之间的启动方式。对于不需要暴露的端口,还需要通过虚拟网桥的方式,保证各个服务之间的正常通讯。这就需要用到 docker-compose 工具,并且需要编辑对应的 Docker Compose 配置文件来控制启动。

Docker Compose配置文件是一个YAML格式的文本文件,通常命名为 docker-compose.yml 或者 compose.yml 。它定义了多个容器应用的服务、网络和卷等细节,使得用户可以使用一个命令轻松管理多容器Docker应用的生命周期。通过该文件,你可以描述应用程序中的服务(如Web服务器、数据库等),每个服务运行的镜像、端口映射、依赖关系、环境变量、存储卷等信息。

今天就拿一个开源项目的 compose.yml 文件 分享一下编写格式。

x-logging: &default-logging
  driver: "json-file"
  options:
    max-size: "10m"
    max-file: "10"

networks:
  playedu:
    driver: bridge

volumes:
  mysql-data:

services:
  playedu:
    image: registry.cn-hangzhou.aliyuncs.com/playedu/light:2.0
    restart: always
    environment:
      - DB_HOST=mysql
      - DB_PORT=3306
      - DB_NAME=playedu
      - DB_USER=root
      - DB_PASS=playeduxyz
      - SA_TOKEN_IS_CONCURRENT=false
      - SA_TOKEN_JWT_SECRET_KEY=${PLAYEDU_JWT_KEY:-playeduxyz}
    ports:
      - "${PLAYEDU_API_PORT:-9700}:9898"
      - "${PLAYEDU_PC_PORT:-9800}:9800"
      - "${PLAYEDU_H5_PORT:-9801}:9801"
      - "${PLAYEDU_ADMIN_PORT:-9900}:9900"
    networks:
      - playedu
    depends_on:
      - mysql
    logging: *default-logging

  mysql:
    build: ./docker/mysql
    restart: always
    environment:
      - MYSQL_DATABASE=playedu
      - MYSQL_ROOT_PASSWORD=playeduxyz
      - TZ=UTC
    volumes:
      - mysql-data:/var/lib/mysql
    ports:
      - "${MYSQL_PORT:-23307}:3306"
    networks:
      - playedu
    logging: *default-logging
  • x-logging: &default-logging 定义一个日志记录模板,名字是:default-logging
    • driver: “json-file” Docker 容器使用的日志驱动为 json-file,即将容器的标准输出和标准错误输出记录到 JSON 格式的文件中。
    • options: 定义参数,日志文件最大 10MB,超过该大小后会自动进行日志轮转。最多10个旧文件。
      max-size: “10m”
      max-file: “10”
  • networks: 定义虚拟网络,名字是 playedu,模式是bridge(桥)
    playedu:
    driver: bridge
  • volumes: 定义卷(存储用的),名称是 mysql-data。这里可以定义多个。
    mysql-data:
  • services: 这里定义的是服务的部分
    • playedu: 服务名称,也用作主机名,通过虚拟网络访问访问的时候,可以直接访问此主机。
      • image: 指定使用哪个镜像
      • build: 指定镜像制作的目录。如果指定的镜像不存在,则自动会到此目录,查找Dockerfile文件,并创建镜像。
      • restart: 启动方式,配置always,在监控到服务down之后,自动启动。
      • environment: 以来的环境变量。这些变量,在镜像初始化或者运行的时候,会用到这些变量。
      • ports: 端口映射,把容器内部端口映射到宿主机。
      • networks: 容器之间通讯使用的网络。
      • depends_on: 启动依赖,用来排布启动顺序。
      • logging: 使用的日志模板。
      • volumes: 卷挂载,把指定的卷挂载到容器内部指定目录。

以上就是 compose.yml 配置文件的主要配置项。

关于docker-compose 基本操作,参考往期文章:https://www.madbull.site/?p=2092

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注