Docker Compose

本文件整理了 Docker Compose 的基本概念、常用語法與實務範例,適合用來管理多容器應用程式。


📖 基本概念

  • Docker Compose:一個工具,用來定義和執行多容器應用程式。

  • 使用 YAML 檔compose.yaml,舊時命名 docker-compose.yaml 描述服務(service)、網路(network)、資料卷(volume)。

  • 一個 docker compose up 就能啟動整個應用程式堆疊。


🔧 安裝與版本

# 查看版本
docker compose version

Docker 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 部署。


📚 參考資源

Awesome Compose 是 Docker 官方維護的範例集合,專門展示如何使用 Docker Compose 來快速建立常見應用程式架構。這些範例涵蓋前後端整合、資料庫、快取、訊息佇列以及完整應用堆疊,非常適合作為學習與實務參考。


✅ 結語

Docker Compose 是管理多容器應用的最佳工具,能讓你用一份 YAML 定義整個環境。掌握常用語法與最佳實務,可以讓開發、測試到部署都更加高效。

Last updated