version: '3.8' services: golem: build: context: . dockerfile: Dockerfile container_name: golem-core restart: unless-stopped ports: - "${DASHBOARD_PORT:-3000}:3000" volumes: # Persistence for memory and logs (Map to the app's internal paths) - ./golem_memory:/app/golem_memory - ./logs:/app/logs # Optional: Mount .env to allow configuration changes without rebuild # Using a relative path that works across environments - ./.env:/app/.env:ro environment: - ENABLE_WEB_DASHBOARD=true - NODE_ENV=production - PLAYWRIGHT_HEADLESS=${PLAYWRIGHT_HEADLESS:-true} - DASHBOARD_PORT=3000 - GOLEM_DESKTOP_MODE=${GOLEM_DESKTOP_MODE:-false} - GOLEM_DISPLAY=${GOLEM_DISPLAY:-:99} - GOLEM_VNC_PORT=${GOLEM_VNC_PORT:-5900} - GOLEM_NOVNC_PORT=${GOLEM_NOVNC_PORT:-6080} - GOLEM_NOVNC_BIND=${GOLEM_NOVNC_BIND:-0.0.0.0} - GOLEM_VNC_PASSWORD=${GOLEM_VNC_PASSWORD:-} # Use host values if provided, otherwise leave empty - PLAYWRIGHT_REMOTE_DEBUGGING_PORT=${PLAYWRIGHT_REMOTE_DEBUGGING_PORT:-} - HOST_PROJECT_DIR=${PWD} extra_hosts: - "host.docker.internal:host-gateway" # TTY and Stdin are useful for interactive sessions or maintaining terminal-based processes stdin_open: true tty: true healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"] interval: 30s timeout: 10s start_period: 20s retries: 5 logging: driver: "json-file" options: max-size: "10m" max-file: "5" networks: - golem-net networks: golem-net: driver: bridge