services: api: build: context: . target: dev # full dependency set: pytest, ruff, mypy, etc. ports: ["7860:7860"] env_file: [.env] volumes: - ./src:/app/src:ro # hot reload in dev - ./tests:/app/tests:ro # edit tests without rebuilding the image - ./data:/app/data # Hugging Face model cache (the dev image runs as root): the local-fallback weights # (~3 GB) are downloaded once and survive container rebuilds. A named volume, not a # host bind: Docker would create a missing host dir as root and break host-side HF tools. - hf-cache:/root/.cache/huggingface command: [ "uv", "run", "uvicorn", "chokepoint.api.main:app", "--host", "0.0.0.0", "--port", "7860", "--reload", ] volumes: hf-cache: