version: '3.8' 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: - "5432: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", "wget", "--spider", "-q", "http://localhost:3100/health"] interval: 10s timeout: 5s retries: 3 restart: unless-stopped fastapi: build: ./app ports: - "8000:8000" volumes: - ${NAS_SMB_PATH:-/Volumes/Document_Server}:/documents 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: 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 - frontend restart: unless-stopped volumes: pgdata: caddy_data: