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