services: postgres: image: pgvector/pgvector:pg16 volumes: - pgdata:/var/lib/postgresql/data - ./migrations:/docker-entrypoint-initdb.d environment: POSTGRES_DB: pkm POSTGRES_USER: pkm POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} ports: - "15432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U pkm"] interval: 5s timeout: 5s retries: 5 restart: unless-stopped kordoc-service: build: ./services/kordoc ports: - "3100:3100" volumes: - ${NAS_SMB_PATH:-/Volumes/Document_Server}:/documents:ro healthcheck: test: ["CMD", "node", "-e", "fetch('http://localhost:3100/health').then(r=>{process.exit(r.ok?0:1)}).catch(()=>process.exit(1))"] interval: 10s timeout: 5s retries: 3 restart: unless-stopped fastapi: build: ./app ports: - "8000:8000" volumes: - ${NAS_SMB_PATH:-/Volumes/Document_Server}:/documents - ./config.yaml:/app/config.yaml:ro - ./scripts:/app/scripts:ro - ./logs:/app/logs depends_on: postgres: condition: service_healthy kordoc-service: condition: service_healthy env_file: - credentials.env environment: - DATABASE_URL=postgresql+asyncpg://pkm:${POSTGRES_PASSWORD}@postgres:5432/pkm - KORDOC_ENDPOINT=http://kordoc-service:3100 restart: unless-stopped # frontend: Phase 4에서 SvelteKit 빌드 안정화 후 활성화 # frontend: # build: ./frontend # ports: # - "3000:3000" # depends_on: # - fastapi # restart: unless-stopped caddy: image: caddy:2 ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data depends_on: - fastapi restart: unless-stopped volumes: pgdata: caddy_data: