services: app: build: context: . dockerfile: backend/Dockerfile args: VITE_TURNSTILE_SITE_KEY: ${TURNSTILE_SITE_KEY} container_name: ai-synth restart: unless-stopped env_file: .env environment: - DATABASE_URL=postgres://ai_synth:${POSTGRES_PASSWORD}@db:5432/ai_synth - STATIC_DIR=./static depends_on: db: condition: service_healthy networks: - internal ports: - "127.0.0.1:${EXT_PORT:-8005}:8080" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/api/v1/health"] interval: 30s timeout: 5s start_period: 15s retries: 3 db: image: postgres:17-alpine container_name: ai-synth-db restart: unless-stopped environment: POSTGRES_USER: ai_synth POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ai_synth volumes: - postgres_data:/var/lib/postgresql/data networks: - internal ports: - "127.0.0.1:5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U ai_synth -d ai_synth"] interval: 10s timeout: 5s start_period: 10s retries: 5 shm_size: 128mb networks: internal: driver: bridge volumes: postgres_data: driver: local