Overview

Compose 定位是「定義和運行多個 docker container 的應用」。透過使用一個Dockerfile模板文件,可以讓用戶很方便的定義一個單獨的 container。然而,在日常工作中,經常會碰到需要多個 container 相互配合來完成某項任務的情況。例如要實現一個 Web 項目,除了 Web 服務 container 本身,往往還需要再加上放置的數據庫服務的 container,甚至還包括負載均衡 container 等。

Compose恰好滿足了這樣的需求。它允許用戶通過一個單獨的模板文件(YAML 格式)來定義各個相關聯的應用 container 為一個 project。

Compose 中有兩个重要的概念:

Compose 的默認管理對像是 project,通過子命令對 project 中的一組 container 進行便捷的生命週期管理。

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/2d01a0fb-946d-4d52-8cf5-daa028d516dc/Untitled.png

預設模板文件名稱為 docker-compose.yml,格式為 YAML 格式。

version: "3"

services:
  webapp:
    image: examples/web
    ports:
      - "80:80"
    volumes:
      - "/data"

每個 service 都必須通過 image 指令指定 image 或使用 build 指令(需要 Dockerfile)等來自動構建生成 image。

如果使用 build 指令,在 Dockerfile 中設置的選項 (例如:CMD, EXPOSE, VOLUME, ENV 等) 將會自動被獲取,無需在 docker-compose.yml 中重複設置。