2 Commits

Author SHA1 Message Date
Henrik Jess Nielsen
8ac5aed3e0 perf: cache pip downloads and Docker layers in CI build
- Add BuildKit pip cache mount to Dockerfile (persists torch/transformers
  downloads across builds on the runner host)
- Enable DOCKER_BUILDKIT=1 in workflow env
- Pull previous image before build for layer cache reuse
- Add --cache-from latest + BUILDKIT_INLINE_CACHE=1 to docker build

BUILDKIT_INLINE_CACHE embeds cache metadata in the pushed image so
--cache-from works from the registry (cold runner or new runner).
SHA tag push reuses already-pushed layers - only metadata transferred.

Expected improvement:
- Unchanged code:       ~5 min -> ~30 sec (layer cache hit)
- requirements changed: ~5 min -> ~1 min (pip disk cache)
- Push:                 only changed layers uploaded; SHA tag is free
2026-05-27 22:21:15 +02:00
Henrik Jess Nielsen
6f1ee72e10 feat: containerize for mmd.i80.dk deployment via Gitea/Nomad
Some checks failed
Build and Deploy MoneyMaker / build-and-deploy (push) Failing after 15s
- Add Dockerfile (python:3.12-slim, HF_HOME=/app/data/hf-cache)
- Add mmd.nomad (multi-task: web=dashboard, worker=scheduler)
- Add .gitea/workflows/deploy.yml (build->Harbor, deploy->Nomad)
- Add scheduler.py (stdlib scheduler replaces cron in container)
- Add requirements.txt
- dashboard.py: LOG_DIR + PORT/HOST from env vars
- saxo_auth.py: TOKEN_FILE from SAXO_TOKEN_FILE env var
- .gitignore: proper ignores for container project

Volume moneymaker-data (/app/data) holds:
  - logs/ (shared between web+worker)
  - .saxo_token.json (pre-copy once after first deploy)
  - hf-cache/ (HuggingFace FinBERT cache)

Gitea secrets required: DATABASE_URL, ANTHROPIC_API_KEY,
SAXO_APP_KEY, SAXO_APP_SECRET_1, HARBOR_ROBOT_TOKEN
2026-05-26 22:30:38 +02:00