deploy: containerize the live simple-mode API (Docker)
Ships the production serving path (FastAPI upload/map UI + statistical device-category identification) as a lean, reproducible container: - Dockerfile: python:3.10-slim, non-root user, /health HEALTHCHECK, serves uvicorn src.api.main_simple:app. Bakes in the joblib category model and the static rtl_433 protocol table; excludes the 11 GB test corpora and the benched Phase 3B CNN binaries. Built image is 417 MB. - requirements-prod.txt: pins matched to the versions that actually train/serve the model (scikit-learn 1.6.1 / numpy 2.2.6) so joblib.load() stays valid. torch/onnx intentionally absent — the CNN is benched, not on the serving path. - docker-compose.yml: single service, named volume seeds from baked data/ on first run then persists captures_simple.json writes across restarts. - .dockerignore: keeps data/, venv/, vendored firmware, docs out of the image. Validated: image builds, container reports healthy, and the statistical classifier loads + predicts inside the container. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
# Keep the image small and reproducible. The 11 GB test corpora, the local
|
||||
# venv, and the vendored Flipper firmware are NOT needed to serve the app.
|
||||
|
||||
# Heavy / irrelevant
|
||||
data/rf_test_datasets/
|
||||
data/test_db/
|
||||
data/test_known_devices/
|
||||
data/test_rtl433_real/
|
||||
signatures/
|
||||
venv/
|
||||
logs/
|
||||
docs/
|
||||
tests/
|
||||
test_files/
|
||||
scripts/
|
||||
|
||||
# Benched Phase 3B CNN binaries (not on the serving path)
|
||||
models/category_cnn.pt
|
||||
models/category_cnn.onnx
|
||||
|
||||
# VCS / caches / editor
|
||||
.git/
|
||||
.gitignore
|
||||
**/__pycache__/
|
||||
**/*.pyc
|
||||
**/*.pyo
|
||||
.pytest_cache/
|
||||
.mypy_cache/
|
||||
*.egg-info/
|
||||
.DS_Store
|
||||
|
||||
# Docs & planning (not needed at runtime)
|
||||
*.md
|
||||
CONTEXT.md
|
||||
FABLE.md
|
||||
PLAN_TO_PROD.md
|
||||
Reference in New Issue
Block a user