docker-compose.yml:
- Remove env_file — all vars inline with \${VAR:-default} substitution
- NTFY_TOPIC soft-defaults to empty (no hard :? error)
- Pull pre-built images from ghcr.io (no local build step)
- Add resource limits: app 512MB/1CPU, notifier 128MB/0.25CPU
- Add x-casaos metadata for CasaOS app store / dashboard
- Remove dev service (run separately as needed)
.github/workflows/docker.yml:
- Build and push both app (ghcr.io/nmemmert/letter) and notifier
(ghcr.io/nmemmert/letter-notifier) images in one job
- Separate GHA cache scopes per image for efficient layer reuse
- Separate metadata steps for independent tag sets
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>