创建 compose.yaml 文件

Docker 进阶

Mike Metzger

Data Engineering Consultant

YAML

  • Yet Another Markup Language
    • YAML Ain't Markup Language
  • 文本文件,但空格很重要(类似 Python)
  • 广泛用于配置场景
  • 规则较绕,主要按示例对齐条目
services:
  postgres:
    container_name: postgres
    image: postgres:latest
    ports:
      - "5432:5432"
    restart: always
  pgadmin:
    container_name: pgadmin
    image: dpage/pgadmin4:latest
    ports:
      - "5050:80"
    restart: always
Docker 进阶

主要部分

  • 不同部分处理不同组件
  • services: 列出要加载的容器
  • networks: 定义网络
  • volumes: 控制卷挂载
  • configs: 提供无需自定义镜像的配置
  • secrets: 处理密码、令牌、API 密钥等
  • 详见 Docker Compose 文档
services:
  ... # 定义容器

networks: ... # 定义网络详情
volumes: ... # 定义存储需求
configs: ... # 定义特殊配置
secrets: ... # 定义密码等
1 https://docs.docker.com/compose/compose-file/
Docker 进阶

Services 部分

  • 定义应用所需的全部资源
  • 主要指定要用的容器和镜像
  • 选项很多,但仅作用于各自容器
  • 根据需要缩进
  • 第一层为各组件名称,后跟其设置
Docker 进阶

Services 示例

services:

# 资源名称 postgres:
# 容器名,否则为随机 container_name: postgres
# 要使用的容器镜像 image: postgres:latest
# 需要的端口映射 ports: # 网络详情 - "5432:5432"
# 下一个资源 pgadmin: ...
  • 资源名称
  • container_name: 指定容器名,否则随机
  • image: 指定使用的容器镜像
  • ports: 需要的端口映射列表
  • 接着是其他所需资源
Docker 进阶

补充说明

  • config.yaml 语法很丰富
    • 这里只涉及 compose.yaml 的很小一部分选项
    • 请查阅文档!
  • 通常不必从零编写 compose.yaml 文件
1 https://docs.docker.com/compose/compose-file/
Docker 进阶

让我们练习!

Docker 进阶

Preparing Video For Download...