FROM python:3.11-slim # System binaries: # - postgresql: pytest-postgresql spawns ephemeral test databases # - poppler-utils: provides pdfinfo / pdftotext, used by # backend/documents_parser/tests/test_summary_pdf_mapper_chain.py's # `_summary_pdf_to_textract_style_pages` helper for layout-preserving # PDF text extraction. Pure-Python alternatives (pymupdf, pypdf) don't # reproduce pdftotext -layout's row-major table cell ordering, which # the Elmhurst Summary extractor depends on. RUN apt-get update \ && apt-get install -y --no-install-recommends postgresql poppler-utils \ && rm -rf /var/lib/apt/lists/* WORKDIR /app ENV PYTHONPATH=/app # Copy requirements first so Docker can cache the install layer COPY backend/engine/requirements.txt backend/engine/requirements.txt COPY backend/app/requirements/requirements.txt backend/app/requirements/requirements.txt COPY test.requirements.txt test.requirements.txt RUN pip install --no-cache-dir \ -r backend/engine/requirements.txt \ -r backend/app/requirements/requirements.txt \ -r test.requirements.txt # Copy source COPY . . # pg_ctl refuses to run as root — create an unprivileged user RUN useradd -m testuser && chown -R testuser /app USER testuser CMD ["pytest"]