FROM python:3.12-slim ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 # Protobuf/gRPC stubs live outside the venv-installed packages ENV PYTHONPATH=/app/gen/python # libreoffice: soffice (headless PPTX→PDF); poppler-utils: pdftoppm; fonts-dejavu-core: baseline fonts RUN apt-get update && apt-get install -y --no-install-recommends \ libreoffice \ libreoffice-impress \ poppler-utils \ fonts-dejavu-core \ && rm -rf /var/lib/apt/lists/* WORKDIR /app # Hatch (pyproject readme = ../../../README.md) resolves from each package dir; repo root must exist COPY README.md /app/README.md COPY python /app/python COPY gen /app/gen RUN pip install --no-cache-dir uv WORKDIR /app/python RUN uv sync --frozen --all-packages ENV PATH="/app/python/.venv/bin:$PATH" WORKDIR /app EXPOSE 8080 CMD ["uvicorn", "officeconvert_server.app:app", "--host", "0.0.0.0", "--port", "8080"]