Spaces:
Running on Zero
Running on Zero
File size: 1,730 Bytes
6a46e44 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | # syntax=docker/dockerfile:1
#
# Docling PDF Processor β container image.
#
# Builds the Gradio demo app. Secrets (OPENROUTER_API_KEY, GROQ_API_KEY) are
# NOT baked in β pass them at runtime via env_file (.env) or -e flags.
#
# docker build -t docling-pdf-processor .
# docker run -p 8010:8010 --env-file .env docling-pdf-processor
#
# or use docker compose (see docker-compose.yml).
FROM python:3.11-slim AS base
# System libraries needed by Pillow / image handling on slim images.
RUN apt-get update && apt-get install -y --no-install-recommends \
libgl1 \
libglib2.0-0 \
&& rm -rf /var/lib/apt/lists/*
# uv (pinned to match the lockfile produced with uv 0.7.2).
COPY --from=ghcr.io/astral-sh/uv:0.7.2 /uv /usr/local/bin/uv
WORKDIR /app
ENV UV_COMPILE_BYTECODE=1 \
UV_LINK_MODE=copy \
UV_PYTHON_DOWNLOADS=never \
HF_HOME=/app/.cache/huggingface \
GRADIO_SERVER_NAME=0.0.0.0 \
GRADIO_SERVER_PORT=8010
# ββ Dependency layer (cached unless pyproject/lock change) ββββββββββββββββ
COPY pyproject.toml uv.lock ./
RUN uv sync --frozen --no-dev --no-install-project
# ββ Application source ββββββββββββββββββββββββββββββββββββββββββββββββββββ
COPY docling_pdf_processor ./docling_pdf_processor
COPY main.py README.md ./
RUN uv sync --frozen --no-dev
EXPOSE 8010
# Healthcheck: Gradio serves HEAD / with 200 once ready.
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
CMD python -c "import urllib.request as u; u.urlopen('http://127.0.0.1:8010/', timeout=5)" || exit 1
CMD [".venv/bin/python", "main.py"] |