Docker Compose 是一個用於定義和運行多容器 Docker 應用程式的工具。它透過一個名為 docker-compose.yml 的 YAML 配置檔案,讓開發者可以在其中描述應用程式所需的所有服務,包括容器、網路、卷(volumes)等。使用單一指令,便能啟動或管理整個應用程式的所有容器,極大地簡化了多容器應用的部署和管理。
主要特點
多容器協調:Docker Compose 能夠同時管理多個相互關聯的容器,讓它們以協調的方式運行。例如,一個 web 應用可能需要一個後端服務、一個資料庫和一個快取服務,Docker Compose 可以同時啟動並連接這些服務。
簡化配置:透過 docker-compose.yml 檔案,你可以定義每個服務的映像檔、環境變數、端口映射、卷掛載等配置。這使得應用程式的環境設定透明且可追溯,方便團隊協作和維護。
方便測試和部署:使用 Docker Compose,可以在本地輕鬆地模擬生產環境,進行端到端的測試。部署到生產環境時,也只需在目標伺服器上執行相同的 Compose 配置。
基本用法
定義服務:在專案目錄下創建一個 docker-compose.yml 檔案,定義應用程式需要的所有服務。例如:
version: '3'
services:
web:
build: .
ports:
- "8000:8000"
depends_on:
- db
db:
image: postgres
environment:
POSTGRES_PASSWORD: example
在這個例子中,我們定義了一個 web 服務和一個 db(資料庫)服務,並設定了它們之間的依賴關係。
啟動服務:在終端機中執行 docker-compose up,Docker Compose 會根據配置自動建立並啟動所有服務。
管理服務:可以使用 docker-compose down 停止並移除容器、網路等資源;使用 docker-compose logs 查看服務日誌;使用 docker-compose ps 查看正在運行的服務狀態。
優點
一致性:確保在開發、測試和生產環境中使用相同的設定,減少「在我這裡能跑」的問題。
高效性:簡化了多容器應用的啟動和管理,節省了時間和精力。
可移植性:整個應用程式的配置都在一個檔案中,方便在不同環境中部署。
適用場景
微服務架構:在微服務架構中,應用程式由多個服務組成,Docker Compose 能夠有效地管理這些服務的部署和相互之間的通信。
本地開發環境:開發者可以使用 Docker Compose 在本地搭建與生產環境相似的開發環境,方便進行測試和調試。
持續整合/持續部署(CI/CD):在 CI/CD 流程中,可以使用 Docker Compose 自動化測試和部署流程。
結論
Docker Compose 是 Docker 生態系統中不可或缺的一部分,為開發和運維人員提供了一種簡單而強大的方式來管理多容器應用程式。透過明確的配置和簡單的指令,它大大降低了部署和管理複雜應用程式的難度,使團隊能夠更專注於開發高品質的軟體。