一、前言
在伺服器上部署服務時,如果每個服務都用手動指令啟動,日後維護會變得很麻煩。 Docker Compose 可以將多個服務寫在同一份設定檔中,讓服務啟動、停止、重建與管理變得更清楚。
這篇文章整理 Docker Compose 的基本使用概念,以及在部署 WordPress、資料庫或其他服務時需要注意的地方。
二、Docker Compose 是什麼?
Docker Compose 是用來管理多個 Docker container 的工具。透過一份 docker-compose.yml,可以描述服務名稱、映像檔、環境變數、volume、port 與重啟策略。
例如一個 WordPress 網站通常至少需要:
- WordPress 容器
- MariaDB 或 MySQL 資料庫容器
使用 Compose 後,可以用一個指令啟動整組服務:
docker compose up -d
三、常見設定項目
1. services
services 用來定義要啟動的服務,每個服務通常會對應一個 container。
2. image
image 表示要使用哪個 Docker image,例如 wordpress、mariadb 或 nginx。
3. volumes
volumes 用來保存資料。如果沒有設定 volume,container 被刪除後資料可能也會消失。
例如 WordPress 的網站檔案和資料庫資料都應該使用 volume 保存。
4. ports
ports 用來設定主機與 container 的連接埠對應。
127.0.0.1:8081:80
這代表只有本機可以透過 8081 存取 container 的 80 port,外部無法直接連入。 如果要對外提供服務,可以再由 Nginx 反向代理。
5. restart
restart: unless-stopped 可以讓服務在主機重開機後自動啟動,除非使用者手動停止它。
四、常用指令
啟動服務:
docker compose up -d
停止服務:
docker compose down
查看容器狀態:
docker ps
查看 log:
docker logs container_name --tail=80
五、部署時的注意事項
- 資料庫密碼不要寫得太簡單。
- 重要資料要使用 volume 保存。
- 不需要對外開放的 port 應綁定在 127.0.0.1。
- 服務名稱要清楚,方便日後維護。
- 修改 Compose 檔案後,要重新啟動服務。
六、實際應用
這次 WordPress 架設就使用 Docker Compose 建立兩套 WordPress 與兩套資料庫。 每個網站都有自己的 WordPress container 和 database container,這樣可以讓網站彼此隔離,避免其中一個網站出問題時影響另一個。
這種方式很適合小型伺服器或個人專案使用,因為它兼顧了部署方便與基本隔離。
七、心得
Docker Compose 的重點不是讓服務變得更複雜,而是讓部署流程變得可重複、可管理。
當服務越來越多時,如果沒有統一管理方式,伺服器會很快變得混亂。 使用 Compose 可以讓每個服務的設定被明確記錄下來,也方便之後備份、遷移或重建。
發佈留言