feat(deploy): publish image to GHCR and document Synology DSM setup

Add a release workflow that publishes a linux/amd64 image to
ghcr.io/richardnixondev/reddit-media-collector on every v* tag, plus a
ready-to-paste docker-compose for Synology Container Manager.

Persist scheduler state across container restarts by reading the DB and
config paths from RMC_SCHEDULER_DB / RMC_SCHEDULER_CONFIG (previously
written to /app, which is not a volume).

Drive-by fixes uncovered while smoke-testing the image:
- Dockerfile now copies README.md (required by pyproject) and drops the
  single-file VOLUME entry that breaks bind mounts; adds an OCI source
  label and a socket-based HEALTHCHECK so Container Manager reflects real
  liveness.
- src/web/app.py uses the new Starlette TemplateResponse signature so the
  index page does not 500 under fresh dependency pins.
This commit is contained in:
authentik Default Admin 2026-05-17 14:48:02 +01:00
parent b7265f0582
commit d02e071ddf
6 changed files with 135 additions and 9 deletions

View file

@ -0,0 +1,30 @@
# Compose para deploy no Synology DSM via Container Manager.
# Puxa a imagem pré-construída do GHCR (sem build local no NAS).
# Antes de subir, crie as pastas no NAS:
# mkdir -p /volume1/docker/reddit-media-collector/{downloads,data}
# cp config.yaml /volume1/docker/reddit-media-collector/config.yaml
services:
collector:
image: ghcr.io/richardnixondev/reddit-media-collector:latest
container_name: reddit-media-collector
restart: unless-stopped
ports:
- "8000:8000"
volumes:
- /volume1/docker/reddit-media-collector/downloads:/app/downloads
- /volume1/docker/reddit-media-collector/data:/app/data
- /volume1/docker/reddit-media-collector/config.yaml:/app/config.yaml:ro
environment:
- RMC_TIMEZONE=America/Sao_Paulo
- RMC_DOWNLOAD_DIR=/app/downloads
- RMC_DB_PATH=/app/data/media.db
- RMC_SCHEDULER_DB=/app/data/scheduler.db
- RMC_SCHEDULER_CONFIG=/app/data/scheduler_config.yaml
# Ative HTTP Basic Auth se for expor pela internet (via Reverse Proxy DSM):
# - RMC_AUTH_USER=admin
# - RMC_AUTH_PASS=trocar-isto
# Se o DSM rodar o container como user diferente e der erro de permissão
# nas pastas, descomente abaixo apontando para o UID:GID dono de
# /volume1/docker/reddit-media-collector (descubra com `ls -ln`):
# user: "1026:100"