version: '3.8' services: postgres: image: postgres:15-alpine container_name: shazam_postgres environment: POSTGRES_USER: shazam POSTGRES_PASSWORD: shazam_password POSTGRES_DB: shazam_db ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U shazam -d shazam_db"] interval: 10s timeout: 5s retries: 5 qdrant: image: qdrant/qdrant:latest container_name: shazam_qdrant ports: - "6333:6333" - "6334:6334" volumes: - qdrant_data:/qdrant/storage healthcheck: test: ["CMD", "curl", "-f", "http://localhost:6333/health"] interval: 10s timeout: 5s retries: 5 backend: build: context: ./backend dockerfile: Dockerfile container_name: shazam_backend ports: - "8000:8000" environment: - DATABASE_URL=postgresql://shazam:shazam_password@postgres:5432/shazam_db - QDRANT_HOST=qdrant - QDRANT_PORT=6333 - MUSIC_LIBRARY_PATH=/app/music volumes: - ./backend:/app - ./music:/app/music depends_on: postgres: condition: service_healthy qdrant: condition: service_healthy command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload frontend: build: context: ./frontend dockerfile: Dockerfile container_name: shazam_frontend ports: - "5173:5173" environment: - VITE_API_URL=http://localhost:8000 volumes: - ./frontend:/app - /app/node_modules depends_on: - backend command: npm run dev -- --host volumes: postgres_data: qdrant_data: