Containerize Hold Slayer as a single image (one FastAPI process serving REST/WS/MCP and its built SvelteKit dashboard) for deployment to Virgo Dev on triton. - Dockerfile: 3-stage (node builds the dashboard → python wheels → runtime). Runs from source via `pip install -e .` so db/database.py resolves alembic.ini (via __file__.parent.parent) and migrations run on boot. The loose top-level modules (main.py, config.py) also require the source layout. pjsua2 is left unbuilt (documented stub media) — fine for a mock-SIP deploy. - .dockerignore: keep .env and gitignored dashboard build artifacts out of the context; the node stage builds a fresh dashboard. - CI (.gitea/workflows): single-image Trivy scan + build + push to git.helu.ca/r/hold-slayer (sha / latest-on-main / semver tags), mirroring the Demeter workflow. Requires a PACKAGE_TOKEN Actions secret. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2.5 KiB
2.5 KiB