多服務架構設計

Vibe Prompt

「幫我寫一個 docker-compose.yml:

  1. Next.js 前端(build ./frontend, port 3000)
  2. FastAPI 後端(build ./backend, port 8000)
  3. PostgreSQL 16(port 5432)
  4. Redis 7(port 6379)
  5. 前端依賴後端,後端依賴資料庫
  6. 所有服務共用一個 network。」

compose.yml

version: "3.8"

services:
  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASS}
      POSTGRES_DB: ${DB_NAME}
    volumes:
      - pgdata:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${DB_USER}"]
      interval: 5s
      timeout: 5s
      retries: 5

  backend:
    build: ./backend
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_started
    environment:
      DATABASE_URL: postgresql://${DB_USER}:${DB_PASS}@postgres:5432/${DB_NAME}
      REDIS_URL: redis://redis:6379
    ports:
      - "8000:8000"

  frontend:
    build: ./frontend
    depends_on:
      - backend
    environment:
      NEXT_PUBLIC_API_URL: http://backend:8000
    ports:
      - "3000:3000"

  redis:
    image: redis:7-alpine

volumes:
  pgdata:

常用指令

docker compose up -d                 # 背景啟動
docker compose logs -f               # 即時日誌
docker compose up -d --build         # 重新建置
docker compose down                  # 停止
docker compose down -v               # 停止並刪除 volume

會員專屬免費教學

本章節為註冊會員專屬的免費開放內容!請先登入或註冊會員,即可立即解鎖閱讀。

立即登入 / 註冊