services:
  app:
    build: 
      context: .
      dockerfile: Dockerfile
      args:
        JOBS: 8
        NODE_OPTIONS: "--max-old-space-size=4096"
    
    restart: unless-stopped
    container_name: trader 
    # Base environment variables (common to all environments)
    environment:
      - DOCKER_ENV=true
      - PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
      - PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium
      - TRADINGVIEW_RECORD_VIDEO=true
      - TZ=Europe/Berlin
      # Playwright/TradingView automation settings
      - CHROMIUM_PATH=/usr/bin/chromium
      - DISABLE_CHROME_SANDBOX=true
      - DISPLAY=$${DISPLAY:-:0}
      # CAPTCHA handling
      - ALLOW_MANUAL_CAPTCHA=true
      # Database configuration
      - DATABASE_URL=file:./prisma/dev.db
    
    # Load environment variables from .env file
    env_file:
      - .env
    
    # Base volumes
    volumes:
      - ./screenshots:/app/screenshots
      - ./videos:/app/videos
      - ./.tradingview-session:/app/.tradingview-session
      - ./prisma:/app/prisma
      # X11 forwarding for GUI display (when ALLOW_MANUAL_CAPTCHA=true)
      - /tmp/.X11-unix:/tmp/.X11-unix:rw
    
    # Port mapping - expose Next.js on port 9000
    ports:
      - "9000:3000"
    
    # X11 and display configuration for manual CAPTCHA solving
    # Use bridge network instead of host for better port management
    networks:
      - default
    privileged: true
    
    # Health check
    healthcheck:
      test: ["CMD-SHELL", "curl -f http://localhost:3000/ || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 30s
