實戰演練:用 Docker Compose 部署一個簡單網站
假設專案結構如下:
mysite/
├── docker-compose.yml
├── app/
│ ├── Dockerfile
│ └── server.js
└── nginx.conf
docker-compose.yml:
version: "3.9"
services:
web:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
depends_on:
- app
app:
build: ./app
expose:
- "3000"
啟動與測試:
docker compose up -d --build
docker compose ps
curl http://localhost:8080
docker compose logs -f app
修改完程式碼後重新建置並套用:
docker compose up -d --build
確認沒問題後可以用 docker compose down 停止整套環境。
練習建議
- 把第四章的多階段建置範例,改寫成你自己語言(Python / Node.js / Go)的版本,比較映像檔大小差異(
docker images可看到 SIZE 欄位) - 練習在
docker-compose.yml中新增一個db服務,並讓app服務透過環境變數連線 - 試著幫自己的 Dockerfile 加上
HEALTHCHECK與非 root 使用者設定
接下來可以往哪裡學?
學會 Docker 之後,可以朝這幾個方向繼續探索:
- Podman 基礎入門:體驗 daemonless、rootless 的容器引擎,理解兩者在安全模型上的差異
- SELinux 基礎入門:了解掛載 Volume 時常見的權限問題,以及如何安全地讓容器存取主機資源
- 網路基礎:深入理解 bridge / overlay 網路、連接埠轉發背後的原理
- Kubernetes:當應用程式需要跨多台主機、自動擴展與自我修復時的標準解決方案
容器化是現代軟體交付的核心技能,紮實的 Docker / Compose 基礎,會讓你之後學習任何雲端平台都更加順手。