Docker 基礎入門

第六章:Docker Compose 與多容器管理

為什麼需要 Docker Compose?

一個應用程式通常由多個容器組成,例如「網站前端」+「API 後端」+「資料庫」。Docker Compose 讓你用一個 YAML 檔案描述所有服務、網路、volume,一個指令就能整套啟動。

docker-compose.yml 範例

version: "3.9"

services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"
    depends_on:
      - app

  app:
    build: ./app
    environment:
      - DB_HOST=db
      - DB_PASSWORD=secret
    expose:
      - "3000"

  db:
    image: postgres:16
    environment:
      - POSTGRES_PASSWORD=secret
    volumes:
      - dbdata:/var/lib/postgresql/data

volumes:
  dbdata:

常用指令

docker compose up -d        # 依設定檔建立並啟動所有服務(背景執行)
docker compose ps           # 查看所有服務狀態
docker compose logs -f      # 持續查看所有服務的輸出
docker compose down         # 停止並移除所有服務(保留 volume)
docker compose down -v      # 連同 volume 一起移除

Compose 的好處

  • 一鍵啟動整套環境:新成員加入專案,只要 docker compose up -d 就能跑起完整環境
  • 服務間自動建立網路:同一個 docker-compose.yml 內的服務可以直接用服務名稱(如 dbapp)互相連線
  • 依賴關係:用 depends_on 控制啟動順序(注意:只保證啟動順序,不保證裡面的服務「已經準備好」)

環境變數管理

機密資訊建議放在 .env 檔案,並加進 .gitignore

# .env
DB_PASSWORD=secret
environment:
  - DB_PASSWORD=${DB_PASSWORD}

Docker Compose 是中小型專案最實用的多容器管理工具,幾乎是現代開發環境的標準配備。