FROM python:3.11-slim-bookworm AS builder RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY pyproject.toml ./ RUN pip install --no-cache-dir uv && \ uv pip install --system --no-cache --index-strategy unsafe-best-match -r pyproject.toml FROM python:3.11-slim-bookworm RUN apt-get update && apt-get install -y --no-install-recommends \ libreoffice \ chromium \ fontconfig \ curl \ libgl1 \ libglib2.0-0 \ && rm -rf /var/lib/apt/lists/* ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium ENV APP_DATA_DIRECTORY=/app_data ENV TEMP_DIRECTORY=/tmp/deckforge WORKDIR /app COPY --from=builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages COPY --from=builder /usr/local/bin /usr/local/bin COPY . . # Pre-download ONNX embedding model so it's baked into the image RUN mkdir -p chroma/models && \ curl -fsSL -o chroma/models/onnx.tar.gz \ https://chroma-onnx-models.s3.amazonaws.com/all-MiniLM-L6-v2/onnx.tar.gz && \ tar -xzf chroma/models/onnx.tar.gz -C chroma/models/ EXPOSE 8000 CMD ["uvicorn", "api.main:app", "--host", "0.0.0.0", "--port", "8000"]