services: web: build: context: . dockerfile: Dockerfile image: webgpu-portfolio:latest container_name: webgpu-portfolio-web restart: unless-stopped ports: # Loopback only — system nginx proxies from :443 → :8080 - "127.0.0.1:8080:8080" healthcheck: test: ["CMD-SHELL", "curl -sf http://127.0.0.1:8080/ || exit 1"] interval: 15s timeout: 5s retries: 3 start_period: 5s