Docker Compose
本文件整理了 Docker Compose 的基本概念、常用語法與實務範例,適合用來管理多容器應用程式。
📖 基本概念
Docker Compose:一個工具,用來定義和執行多容器應用程式。
使用 YAML 檔 之
compose.yaml,舊時命名docker-compose.yaml描述服務(service)、網路(network)、資料卷(volume)。一個
docker compose up就能啟動整個應用程式堆疊。
🔧 安裝與版本
# 查看版本
docker compose versionDocker Compose v2 已經整合到 Docker CLI 中,使用方式是:
docker compose <command>而不是舊版的 docker-compose(建議升級)。
📑 compose.yaml 範例
1. Web + Redis 範例
啟動:
2. Web + DB 範例(Flask + MySQL)
此範例示範了如何同時定義 自建映像(web) 與 官方映像(mysql),並透過 volume 持久化資料。
⚙️ 常用指令
🧩 常見設定鍵
image
指定映像
nginx:alpine
build
從 Dockerfile 建置
build: ./app
ports
埠口對映
"8080:80"
volumes
掛載 volume 或目錄
./site:/usr/share/nginx/html
environment
環境變數
MYSQL_ROOT_PASSWORD: example
env_file
從檔案載入環境變數
env_file: .env
depends_on
設定啟動順序
depends_on: [db]
networks
指定網路
networks: [appnet]
restart
重啟策略
restart: unless-stopped
🔒 最佳實務
使用
.env管理敏感資訊,避免寫死在 YAML。資料庫一律掛載 volume,避免容器刪除後資料遺失。
不要過度依賴
depends_on,應在程式中實作「重試連線」。建立專案專屬網路,讓服務能用名稱互通。
搭配 CI/CD,自動執行
docker compose up -d部署。
📚 參考資源
Docker 官方文件:Docker Compose
Compose 範例集:Awesome Compose
Awesome Compose 是 Docker 官方維護的範例集合,專門展示如何使用 Docker Compose 來快速建立常見應用程式架構。這些範例涵蓋前後端整合、資料庫、快取、訊息佇列以及完整應用堆疊,非常適合作為學習與實務參考。
✅ 結語
Docker Compose 是管理多容器應用的最佳工具,能讓你用一份 YAML 定義整個環境。掌握常用語法與最佳實務,可以讓開發、測試到部署都更加高效。
Last updated