services: skillspector-web: build: context: . dockerfile: Dockerfile container_name: skillspector-web restart: unless-stopped environment: WEBUI_USER: ${WEBUI_USER:-admin} WEBUI_PASSWORD: ${WEBUI_PASSWORD} SCAN_TIMEOUT_SECONDS: "300" # Nur setzen, wenn LLM-Analyse gewünscht ist (optional, siehe README): # ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY} # Nur auf localhost binden – Zugriff von außen läuft über deinen # bestehenden Reverse Proxy (CloudPanel) mit TLS + eigenem Vhost. ports: - "127.0.0.1:8000:8000" # Härtung: kein Zugriff auf den Docker-Socket, kein Host-Mount, # Root-Dateisystem read-only, keine erweiterten Rechte. read_only: true tmpfs: - /tmp - /app/scan-tmp cap_drop: - ALL security_opt: - no-new-privileges:true mem_limit: 1g cpus: 1.0 healthcheck: test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/healthz', timeout=3)"] interval: 30s timeout: 5s retries: 3