# ============================================================================= # FlowProof|科研验货官 — docker-compose.yml # Usage: # docker compose up # Launch Gradio web UI on http://localhost:7860 # docker compose run --rm cli # Run CLI (e.g. flowproof verify --help) # ============================================================================= services: # ── Web UI (Gradio) ────────────────────────────────────────────────────── web: build: . container_name: flowproof-web ports: - "7860:7860" environment: - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-} - INTERNLM_API_KEY=${INTERNLM_API_KEY:-} - FLOWPROOF_MODEL=${FLOWPROOF_MODEL:-claude-sonnet-5} - GRADIO_SERVER_NAME=0.0.0.0 - GRADIO_SERVER_PORT=7860 volumes: # Mount a local .env for API keys without baking them into the image - ./.env:/app/.env:ro restart: unless-stopped healthcheck: test: ["CMD", "curl", "-sf", "http://localhost:7860/"] start_period: 15s interval: 30s timeout: 5s retries: 3 # ── CLI mode (one-shot commands) ───────────────────────────────────────── cli: build: . container_name: flowproof-cli entrypoint: ["flowproof"] environment: - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-} - INTERNLM_API_KEY=${INTERNLM_API_KEY:-} - FLOWPROOF_MODEL=${FLOWPROOF_MODEL:-claude-sonnet-5} volumes: - ./.env:/app/.env:ro # Mount a data directory for CSV audit, etc. - ./data:/app/data:ro profiles: - cli # Only start when explicitly asked: docker compose run --rm cli