Files
eink-photo-frame/server/Dockerfile
Thomas Hallock 95de2470b8 Implement provider plugin architecture (#9) with local directory provider (#10)
Plugin framework for photo source backends:
- PhotoProvider ABC with lifecycle hooks, auth flow, cache control
- @register_provider decorator + registry for auto-discovery
- ProviderManager handles instance lifecycle, config persistence,
  aggregated photo pool with weighted random selection
- ProviderCache: in-memory list cache (per-provider TTL), disk-based
  thumbnail cache, optional full image cache for remote providers
- Per-image settings migrated from bare filenames to composite keys
  (provider_id:photo_id) with automatic one-time migration + backup

Local directory provider included as reference implementation — wraps
the existing filesystem logic into the provider interface with upload
and delete support.

All existing endpoints preserved with composite key routing. ESP32
firmware unchanged — still hits GET /photo, gets a JPEG.

New API: /api/providers/* for managing provider instances, auth flows,
and cache control.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 23:40:15 -05:00

14 lines
257 B
Docker

FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY server.py dither.py ./
COPY providers/ ./providers/
EXPOSE 8473
CMD ["python", "server.py", "--port", "8473", "--photos-dir", "/photos"]