Dockerfile 1.1 KB

12345678910111213141516171819202122232425262728
  1. # ── Build stage ────────────────────────────────────────────────────────────────
  2. FROM python:3.11-slim AS base
  3. # System deps for PyMuPDF
  4. RUN apt-get update && apt-get install -y --no-install-recommends \
  5. libmupdf-dev \
  6. && rm -rf /var/lib/apt/lists/*
  7. WORKDIR /app
  8. # Install Python deps first (layer cache)
  9. COPY requirements.txt .
  10. RUN pip install --no-cache-dir -r requirements.txt
  11. # Copy package
  12. COPY book_ingestor/ ./book_ingestor/
  13. # ── Runtime ─────────────────────────────────────────────────────────────────────
  14. # books/ is mounted at runtime — not baked in
  15. RUN mkdir -p books/inbox books/processing books/done books/manifests
  16. # Non-root user for safety
  17. RUN useradd -m -u 1000 ingestor && chown -R ingestor:ingestor /app
  18. USER ingestor
  19. ENV PYTHONUNBUFFERED=1
  20. CMD ["python", "-m", "book_ingestor.watchdog_runner"]