services:
  postgres:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: trackeep
      POSTGRES_USER: trackeep
      POSTGRES_PASSWORD: trackeep123
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U trackeep -d trackeep"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s

  youtube-scraper:
    build:
      context: ./backend
      dockerfile: Dockerfile.youtube-scraper
    ports:
      - "7857:7857"
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:7857/ || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 20s

  youtube-search:
    build:
      context: .
      dockerfile: Dockerfile.youtube-search
    ports:
      - "8090:8090"
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:8090/youtube?q=test || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 20s

  trackeep-backend:
    build:
      context: ./backend
      dockerfile: Dockerfile
    ports:
      - "${PORT:-8080}:8080"
    env_file:
      - .env
    volumes:
      - ./data:/data
      - ./uploads:/app/uploads
    restart: unless-stopped
    depends_on:
      postgres:
        condition: service_healthy
      youtube-scraper:
        condition: service_healthy
      youtube-search:
        condition: service_healthy
      youtube-video-scraper:
        condition: service_healthy
    healthcheck:
      test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:8080/health || wget --no-verbose --tries=1 --spider http://localhost:8080/live"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

  youtube-video-scraper:
    build:
      context: ./youtube-video-scraper
      dockerfile: Dockerfile
    ports:
      - "7858:7858"
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:7858/health || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 20s

  trackeep-frontend:
    build:
      context: ./frontend
      dockerfile: Dockerfile
    ports:
      - "5173:80"
    depends_on:
      trackeep-backend:
        condition: service_healthy
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "pgrep nginx > /dev/null || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 20s

volumes:
  postgres_data:
