docker-compose-編排 是做什麼的?
使用 Docker Compose 進行多容器應用程式的容器編排,包括網路、磁碟區與生產環境部署
概觀
此技能提供使用 Docker Compose 管理多容器 Docker 應用程式的全面指南。它涵蓋從基本服務定義到進階生產部署策略的所有內容,確保開發人員可以輕鬆地將工作流程標準化。
主要功能
- 服務定義:使用
docker-compose.yml檔案定義多個服務,包括映像檔、連接埠和環境變數。 - 網路:建立自訂網路以隔離服務,並啟用服務間的 DNS 解析。
- 磁碟區:管理具名磁碟區和繫結掛載,以實現持久的資料儲存。
- 生產部署:使用反向代理、健康檢查和日誌記錄,針對生產環境最佳化組態。
支援的平台
此技能與任何支援 Docker 的環境相容,包括:
- 本地開發機器(Linux、macOS、Windows)
- CI/CD 管線(GitHub Actions、GitLab CI、Jenkins)
- 雲端伺服器(AWS EC2、DigitalOcean Droplets、Linode)
使用方式
先決條件
- 安裝 Docker Engine 20.10 或更新版本
- 安裝 Docker Compose V2(作為 Docker CLI 插件)
基本用法
- 建立一個
docker-compose.yml檔案:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
networks:
- frontend
db:
image: postgres:13
volumes:
- db-data:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: example
networks:
- backend
networks:
frontend:
backend:
volumes:
db-data:
- 啟動服務:
docker compose up -d
- 停止服務:
docker compose down
進階組態
- 健康檢查:為服務新增健康檢查以確保正常運作。
- 資源限制:使用
deploy區塊設定 CPU 和記憶體限制。 - 環境變數:使用
.env檔案管理敏感資料。
最佳實踐
- 對不同環境(開發、暫存、生產)使用不同的
docker-compose.yml檔案。 - 使用具名磁碟區而非繫結掛載以實現更好的可攜性。
- 為服務間通訊使用自訂網路,並避免使用預設網路。
- 始終為服務指定確切的映像檔標籤。
疑難排解
- 連接埠衝突:檢查
docker ps以確認沒有其他容器使用相同的連接埠。 - 磁碟區權限:確保 Docker 使用者對繫結掛載目錄具有讀取/寫入權限。
- DNS 解析問題:驗證服務是否在同一個自訂網路中。
參考資料
此技能由 manutej 提供。