services: app: build: context: . dockerfile: Dockerfile args: JOBS: 8 NODE_OPTIONS: "--max-old-space-size=4096" # 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