Compose 教學:做 IT 嘅你一定聽過 Docker,但當你個 application 越嚟越複雜,要同時 run 幾個 containers(例如 web server + database + cache),逐個 docker run 真係搞到頭都大。呢個時候,Docker Compose 就係你嘅救星。
今日就同大家由零開始,用 Docker Compose 搞掂一個 WordPress + MySQL + Redis 嘅完整部署。冇廢話,即刻開波!
Docker Compose 係咩?點解你要用?

Docker Compose 係 Docker 官方出嘅容器編排工具,用一個 YAML 檔案(docker-compose.yml)就可以定義晒所有 containers、networks、volumes 嘅設定。一條 command 就部署晒成個 stack,慳時間又唔會漏設定。
Docker Compose 嘅三大好處:
- 一條 command 搞掂晒 —
docker compose up -d就部署晒所有服務 - 環境一致 — 開發、測試、生產環境用同一份 YAML,唔會出現「我部機郁到喎」嘅經典問題
- 易管理 — 所有服務定義集中喺一個 file,唔使記住成堆 docker run 參數
Docker Compose 安裝(macOS / Linux)
macOS 用家裝 Docker Desktop 已經包埋 Docker Compose。Linux 嘅話:
# Ubuntu/Debian
sudo apt update && sudo apt install docker-compose-plugin -y
# 確認安裝
docker compose version
# Docker Compose version v2.27.0
⚠️ 留意:新版用 docker compose(空格),舊版係 docker-compose(dash)。2026 年絕大部分 distro 都已經轉咗新版。
Docker Compose 實戰:WordPress + MySQL + Redis
以下係一個完整嘅 docker-compose.yml,部署一個生產級 WordPress 網站:
version: "3.8"
services:
wordpress:
image: wordpress:6.6-php8.3-apache
container_name: wp-app
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: wppass
WORDPRESS_DB_NAME: wordpress
WORDPRESS_REDIS_HOST: cache
volumes:
- wp_data:/var/www/html
depends_on:
db:
condition: service_healthy
cache:
condition: service_started
restart: unless-stopped
db:
image: mysql:8.0
container_name: wp-db
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: wppass
volumes:
- db_data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
cache:
image: redis:7-alpine
container_name: wp-cache
volumes:
- cache_data:/data
restart: unless-stopped
volumes:
wp_data:
db_data:
cache_data:
Step-by-Step 部署
Step 1: Save 上面個 YAML 做 docker-compose.yml
Step 2: 一行 command 部署晒:
docker compose up -d
你會見到類似 output:
[+] Running 3/3
✔ Container wp-cache Started
✔ Container wp-db Healthy
✔ Container wp-app Started
Step 3: 確認所有 containers 行緊:
docker compose ps
Step 4: 打開 browser 去 http://localhost:8080,你已經見到 WordPress 安裝畫面!
Docker Compose 常用管理指令
部署完之後,日常管理靠呢幾條 command 就夠:
# 睇 logs(實時追蹤)
docker compose logs -f
# 只睇特定 service
docker compose logs -f wordpress
# 停止所有服務
docker compose down
# 停止並刪除 volumes(⚠️ 會鏟晒數據!)
docker compose down -v
# 重新 build + 部署(改咗 Dockerfile 之後)
docker compose up -d --build
# 只重啟某個 service
docker compose restart db
# 進入 container shell
docker compose exec wordpress bash
# 擴展多個 instances(如果 service 設計支援)
docker compose up -d --scale wordpress=3
Docker Compose 生產環境貼士
- 唔好 hardcode secrets — 用
.envfile +${VARIABLE}語法,唔好將密碼寫死喺 YAML - set resource limits —
deploy.resources.limits設定 CPU/memory 上限,防止一個 container 食晒資源 - 用 healthcheck — 特別係 database,確保 dependents 唔會喺 DB 未 ready 就啟動
- network 隔離 — 用 custom networks 分隔 frontend/backend 流量
- 定時 backup volumes — 用 cron job 定期 backup 你嘅 Docker volumes
# .env file example
MYSQL_ROOT_PASSWORD=SuperSecure123!
WORDPRESS_DB_PASSWORD=AnotherSecure456!
YAML 入面改為:
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
Docker Compose 進階技巧
Profile-based 部署
有啲服務只喺開發環境需要,可以用 profiles:
services:
phpmyadmin:
image: phpmyadmin:latest
profiles:
- dev
ports:
- "8081:80"
開發時:docker compose --profile dev up -d
生產時唔加 --profile dev 就唔會啟動 phpMyAdmin。
Override files
# 基礎設定
docker-compose.yml
# 生產 override(加 TLS、resource limits)
docker-compose.prod.yml
# 合併執行
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d
Docker Compose 總結:必學 DevOps 工具
Compose 係現代 DevOps 必學工具,由 local dev 到 production deployment 都用到。一條 YAML 搞掂晒 multi-container 部署,乾淨、可重複、易維護。記住:與其每次打 5 條 docker run,不如花 5 分鐘寫個 docker-compose.yml,之後就一世輕鬆。
📌 延伸閱讀:
🔗 參考資料: Docker Compose 官方文檔
#DockerCompose #Docker #DevOps #Container #WordPress #MySQL #Redis #IT教學



