# MusicAnalyser Docker Compose Template
# Copy this file to docker-compose.yml and fill in your values
# Or use environment variables / .env file

version: '3.8'

services:
  backend:
    build:
      context: ./backend
    image: ghcr.io/bnair123/musicanalyser:latest
    container_name: music-analyser-backend
    restart: unless-stopped
    volumes:
      - music_data:/app/data
    environment:
      - DATABASE_URL=sqlite:////app/data/music.db
      # Required: Spotify API credentials
      - SPOTIFY_CLIENT_ID=your_spotify_client_id_here
      - SPOTIFY_CLIENT_SECRET=your_spotify_client_secret_here
      - SPOTIFY_REFRESH_TOKEN=your_spotify_refresh_token_here
      # Required: AI API key (choose one)
      - OPENAI_API_KEY=your_openai_api_key_here
      # OR
      - GEMINI_API_KEY=your_gemini_api_key_here
      # Optional: Genius for lyrics
      - GENIUS_ACCESS_TOKEN=your_genius_token_here
      # Optional: Spotify Playlist IDs (will be created if not provided)
      - SIX_HOUR_PLAYLIST_ID=your_playlist_id_here
      - DAILY_PLAYLIST_ID=your_playlist_id_here
    ports:
      - '8000:8000'
    networks:
      - dockernet
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8000/snapshots?limit=1"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 60s

  frontend:
    build:
      context: ./frontend
    image: ghcr.io/bnair123/musicanalyser-frontend:latest
    container_name: music-analyser-frontend
    restart: unless-stopped
    ports:
      - '8991:80'
    networks:
      - dockernet
    depends_on:
      backend:
        condition: service_healthy

volumes:
  music_data:
    driver: local

networks:
  dockernet:
    external: true
    # If you don't have an external dockernet, create it with:
    # docker network create dockernet
    # Or change to:
    # dockernet:
    #   driver: bridge
