建立 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「Documentation」(https://docs.docker.com/compose/compose-file/)
services:
  ... # Define containers

networks: ... # Define any networking details
volumes: ... # Define storage requirements
configs: ... # Define special config details
secrets: ... # Define passwords / etc
1 https://docs.docker.com/compose/compose-file/
Docker 中級

Services 區段

  • 定義應用程式所需的所有資源
  • 主要指定要用的容器與映像
  • 選項很多,但只作用於各個容器本身
  • 視需要加入縮排
  • 子區段以元件名稱開頭,後面接設定
Docker 中級

Services 範例

services:

# Resource name postgres:
# Container name, otherwise random container_name: postgres
# Container image to use image: postgres:latest
# Any port mapping required ports: # Network details - "5432:5432"
# Next resource 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...