services: web: build: context: . target: runtime args: # Build-time only: Vite bakes these into the bundle. VITE_API_BASE_URL: ${VITE_API_BASE_URL} VITE_RECAPTCHA_SITE_KEY: ${VITE_RECAPTCHA_SITE_KEY} restart: unless-stopped # Coolify's proxy reaches this over the internal network; no host ports. expose: - "8080" environment: # Consumed by Coolify to route the domain at the right container port. SERVICE_URL_WEB: ${SERVICE_URL_WEB:-} security_opt: - no-new-privileges:true read_only: true tmpfs: - /tmp - /var/cache/nginx cap_drop: - ALL cap_add: - CHOWN - SETGID - SETUID healthcheck: test: ["CMD", "wget", "-qO-", "http://127.0.0.1:8080/healthz"] interval: 30s timeout: 3s start_period: 5s retries: 3 logging: driver: json-file options: max-size: "10m" max-file: "3"