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,30 @@
|
||||
# GigLez production runtime — the LIVE simple-mode path only
|
||||
# (src/api/main_simple.py → SignatureMatcher → pattern_decoder → statistical ML).
|
||||
#
|
||||
# Versions are pinned to what actually trained/serves the model in this env.
|
||||
# In particular scikit-learn/numpy MUST match the versions the
|
||||
# models/category_classifier.joblib bundle was built with (1.6.1 / 2.2.x),
|
||||
# or joblib.load() will warn/break. Do NOT downgrade to the old
|
||||
# requirements.txt pins — those drive the dormant SQLAlchemy/PostGIS path.
|
||||
#
|
||||
# NOTE: torch/onnx are intentionally absent — the Phase 3B CNN is benched
|
||||
# (loses to the statistical model), so it is not part of the serving path.
|
||||
|
||||
# Web stack
|
||||
fastapi==0.121.1
|
||||
starlette==0.46.0
|
||||
uvicorn[standard]==0.31.1
|
||||
jinja2==3.1.6
|
||||
python-multipart==0.0.22
|
||||
pydantic==2.12.4
|
||||
|
||||
# Numerics + statistical ML (RAW category classifier)
|
||||
numpy==2.2.6
|
||||
scipy==1.15.3
|
||||
scikit-learn==1.6.1
|
||||
joblib==1.5.3
|
||||
|
||||
# Support
|
||||
loguru==0.7.2
|
||||
pyyaml==6.0.2
|
||||
python-dateutil==2.9.0.post0
|
||||
Reference in New Issue
Block a user