services: benchmark: # Builds from the repo's Dockerfile: # stage 1 (python) runs generate_dashboard.py from data/benchmark_history.json # stage 2 (nginx) serves dashboard.html + pages/ as static build: . image: llm-benchmark:latest container_name: llm-benchmark restart: unless-stopped ports: - "0.0.0.0:31415:80" # bind all interfaces:31415 -> container :80 (obscure port; Netbird proxies in front) # Re-tag the image so `docker compose up` after a code change rebuilds it. # (compose detects Dockerfile/context changes and rebuilds automatically.)