Docker 基礎入門

第八章:實戰案例與專案練習

實戰演練:用 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 停止整套環境。

練習建議

  1. 把第四章的多階段建置範例,改寫成你自己語言(Python / Node.js / Go)的版本,比較映像檔大小差異(docker images 可看到 SIZE 欄位)
  2. 練習在 docker-compose.yml 中新增一個 db 服務,並讓 app 服務透過環境變數連線
  3. 試著幫自己的 Dockerfile 加上 HEALTHCHECK 與非 root 使用者設定

接下來可以往哪裡學?

學會 Docker 之後,可以朝這幾個方向繼續探索:

  • Podman 基礎入門:體驗 daemonless、rootless 的容器引擎,理解兩者在安全模型上的差異
  • SELinux 基礎入門:了解掛載 Volume 時常見的權限問題,以及如何安全地讓容器存取主機資源
  • 網路基礎:深入理解 bridge / overlay 網路、連接埠轉發背後的原理
  • Kubernetes:當應用程式需要跨多台主機、自動擴展與自我修復時的標準解決方案

容器化是現代軟體交付的核心技能,紮實的 Docker / Compose 基礎,會讓你之後學習任何雲端平台都更加順手。