為什麼需要 Docker Compose?
一個應用程式通常由多個容器組成,例如「網站前端」+「API 後端」+「資料庫」。Docker Compose 讓你用一個 YAML 檔案描述所有服務、網路、volume,一個指令就能整套啟動。
docker-compose.yml 範例
version: "3.9"
services:
web:
image: nginx:alpine
ports:
- "8080:80"
depends_on:
- app
app:
build: ./app
environment:
- DB_HOST=db
- DB_PASSWORD=secret
expose:
- "3000"
db:
image: postgres:16
environment:
- POSTGRES_PASSWORD=secret
volumes:
- dbdata:/var/lib/postgresql/data
volumes:
dbdata:
常用指令
docker compose up -d # 依設定檔建立並啟動所有服務(背景執行)
docker compose ps # 查看所有服務狀態
docker compose logs -f # 持續查看所有服務的輸出
docker compose down # 停止並移除所有服務(保留 volume)
docker compose down -v # 連同 volume 一起移除
Compose 的好處
- 一鍵啟動整套環境:新成員加入專案,只要
docker compose up -d就能跑起完整環境 - 服務間自動建立網路:同一個
docker-compose.yml內的服務可以直接用服務名稱(如db、app)互相連線 - 依賴關係:用
depends_on控制啟動順序(注意:只保證啟動順序,不保證裡面的服務「已經準備好」)
環境變數管理
機密資訊建議放在 .env 檔案,並加進 .gitignore:
# .env
DB_PASSWORD=secret
environment:
- DB_PASSWORD=${DB_PASSWORD}
Docker Compose 是中小型專案最實用的多容器管理工具,幾乎是現代開發環境的標準配備。