services: app: build: context: . dockerfile: ${DOCKERFILE:-docker/Dockerfile} args: - NODE_ENV=${NODE_ENV:-production} container_name: ${CONTAINER_NAME:-pulse} ports: - "7654:7654" # Backend API - "3000:3000" # Frontend dev server - "7656:7656" # Mock data server (only used in dev mode) volumes: - ./logs:/app/logs # Development mode mounts - only used when DEV_*_MOUNT variables are set in .env - ${DEV_SRC_MOUNT:-./null-volume:/app/null-volume} - ${DEV_FRONTEND_SRC_MOUNT:-./null-volume:/app/null-volume} - ${DEV_FRONTEND_PUBLIC_MOUNT:-./null-volume:/app/null-volume} - ${DEV_FRONTEND_INDEX_MOUNT:-./null-volume:/app/null-volume} - ${DEV_FRONTEND_CONFIG_MOUNT:-./null-volume:/app/null-volume} - ${DEV_SCRIPTS_MOUNT:-./null-volume:/app/null-volume} - ${DEV_ENV_MOUNT:-./null-volume:/app/null-volume} environment: - NODE_ENV=${NODE_ENV:-production} - LOG_LEVEL=${LOG_LEVEL:-info} - DOCKER_CONTAINER=true - USE_MOCK_DATA=${USE_MOCK_DATA:-false} - MOCK_DATA_ENABLED=${MOCK_DATA_ENABLED:-false} - MOCK_SERVER_PORT=${MOCK_SERVER_PORT:-7656} - DRY_RUN=${DRY_RUN:-false} # Performance tuning settings to reduce server load - NODE_POLLING_INTERVAL_MS=${NODE_POLLING_INTERVAL_MS:-15000} - EVENT_POLLING_INTERVAL_MS=${EVENT_POLLING_INTERVAL_MS:-5000} - METRICS_HISTORY_MINUTES=${METRICS_HISTORY_MINUTES:-30} - API_RATE_LIMIT_MS=${API_RATE_LIMIT_MS:-2000} - API_TIMEOUT_MS=${API_TIMEOUT_MS:-90000} - API_RETRY_DELAY_MS=${API_RETRY_DELAY_MS:-10000} # Proxmox configuration - default node - PROXMOX_HOST=${PROXMOX_HOST:-} - PROXMOX_NODE=${PROXMOX_NODE:-} - PROXMOX_TOKEN_ID=${PROXMOX_TOKEN_ID:-} - PROXMOX_TOKEN_SECRET=${PROXMOX_TOKEN_SECRET:-} # Proxmox configuration - additional nodes - PROXMOX_HOST_2=${PROXMOX_HOST_2:-} - PROXMOX_NODE_2=${PROXMOX_NODE_2:-} - PROXMOX_TOKEN_ID_2=${PROXMOX_TOKEN_ID_2:-} - PROXMOX_TOKEN_SECRET_2=${PROXMOX_TOKEN_SECRET_2:-} - PROXMOX_HOST_3=${PROXMOX_HOST_3:-} - PROXMOX_NODE_3=${PROXMOX_NODE_3:-} - PROXMOX_TOKEN_ID_3=${PROXMOX_TOKEN_ID_3:-} - PROXMOX_TOKEN_SECRET_3=${PROXMOX_TOKEN_SECRET_3:-} # SSL verification settings - IGNORE_SSL_ERRORS=${IGNORE_SSL_ERRORS:-false} - NODE_TLS_REJECT_UNAUTHORIZED=${NODE_TLS_REJECT_UNAUTHORIZED:-} - PROXMOX_REJECT_UNAUTHORIZED=${PROXMOX_REJECT_UNAUTHORIZED:-} - HTTPS_REJECT_UNAUTHORIZED=${HTTPS_REJECT_UNAUTHORIZED:-} - PROXMOX_INSECURE=${PROXMOX_INSECURE:-} - PROXMOX_VERIFY_SSL=${PROXMOX_VERIFY_SSL:-} restart: ${RESTART_POLICY:-unless-stopped} healthcheck: test: ["CMD", "curl", "-f", "http://localhost:7654/api/status"] interval: 30s timeout: 10s retries: 3 start_period: 20s