Compose
定位是「定義和運行多個 docker container 的應用」。透過使用一個Dockerfile
模板文件,可以讓用戶很方便的定義一個單獨的 container。然而,在日常工作中,經常會碰到需要多個 container 相互配合來完成某項任務的情況。例如要實現一個 Web 項目,除了 Web 服務 container 本身,往往還需要再加上放置的數據庫服務的 container,甚至還包括負載均衡 container 等。
Compose
恰好滿足了這樣的需求。它允許用戶通過一個單獨的模板文件(YAML 格式)來定義各個相關聯的應用 container 為一個 project。
Compose 中有兩个重要的概念:
projectdocker-compose.yml
文件中定義。Compose 的默認管理對像是 project,通過子命令對 project 中的一組 container 進行便捷的生命週期管理。
預設模板文件名稱為 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
中重複設置。