| # Single image for API (uvicorn) and UI (Streamlit); compose overrides the command per service. | |
| FROM python:3.11-slim-bookworm | |
| ENV PYTHONDONTWRITEBYTECODE=1 \ | |
| PYTHONUNBUFFERED=1 \ | |
| PYTHONPATH=/app \ | |
| PIP_NO_CACHE_DIR=1 \ | |
| ANONYMIZED_TELEMETRY=FALSE | |
| WORKDIR /app | |
| # PyMuPDF / scientific wheels are manylinux; minimal OS deps for SSL and fonts used by PDF tooling. | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| ca-certificates \ | |
| && rm -rf /var/lib/apt/lists/* | |
| COPY requirements.txt . | |
| RUN pip install --upgrade pip && pip install -r requirements.txt | |
| COPY api/ api/ | |
| COPY models/ models/ | |
| COPY rag/ rag/ | |
| COPY storage/ storage/ | |
| COPY workers/ workers/ | |
| COPY app.py streamlit_app.py main.py pyproject.toml README.md ./ | |
| EXPOSE 8000 8501 | |
| CMD ["uvicorn", "api.main:app", "--host", "0.0.0.0", "--port", "8000"] | |