version: '3.8' services: postgres: image: pgvector/pgvector:pg16 container_name: audio_classifier_db environment: POSTGRES_USER: ${POSTGRES_USER:-audio_user} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-audio_password} POSTGRES_DB: ${POSTGRES_DB:-audio_classifier} ports: - "5433:5432" volumes: - postgres_data:/var/lib/postgresql/data - ./backend/init-db.sql:/docker-entrypoint-initdb.d/init-db.sql healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-audio_user}"] interval: 10s timeout: 5s retries: 5 restart: unless-stopped # Backend with minimal dependencies (no Essentia) backend: build: context: ./backend dockerfile: Dockerfile.minimal container_name: audio_classifier_api depends_on: postgres: condition: service_healthy environment: DATABASE_URL: postgresql://${POSTGRES_USER:-audio_user}:${POSTGRES_PASSWORD:-audio_password}@postgres:5432/${POSTGRES_DB:-audio_classifier} CORS_ORIGINS: ${CORS_ORIGINS:-http://localhost:3000} ANALYSIS_USE_CLAP: "false" ANALYSIS_NUM_WORKERS: ${ANALYSIS_NUM_WORKERS:-4} ESSENTIA_MODELS_PATH: /app/models ports: - "8001:8000" volumes: # Mount your audio library (read-only) - ${AUDIO_LIBRARY_PATH:-./audio_samples}:/audio:ro # Development: mount source for hot reload - ./backend/src:/app/src restart: unless-stopped volumes: postgres_data: driver: local