Install torch and torchvision from the CPU-only index before docling to avoid pulling CUDA/nvidia/triton dependencies. Update documentation with measured image sizes (270MB remote, 1.9GB local).
55 lines
1.5 KiB
Docker
55 lines
1.5 KiB
Docker
# syntax=docker/dockerfile:1
|
|
# =============================================================================
|
|
# Docling Studio — backend image (multi-target: remote / local)
|
|
#
|
|
# Usage:
|
|
# docker build --target remote -t docling-studio-backend:remote .
|
|
# docker build --target local -t docling-studio-backend:local .
|
|
# =============================================================================
|
|
|
|
# --- Base: common deps for both targets ---
|
|
FROM python:3.12-slim AS base
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
poppler-utils \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /app
|
|
|
|
COPY requirements.txt .
|
|
RUN pip install --no-cache-dir -r requirements.txt
|
|
|
|
COPY . .
|
|
|
|
RUN useradd --create-home --shell /bin/bash appuser \
|
|
&& mkdir -p /app/uploads /app/data \
|
|
&& chown -R appuser:appuser /app
|
|
|
|
EXPOSE 8000
|
|
|
|
ENV UPLOAD_DIR=/app/uploads
|
|
ENV DB_PATH=/app/data/docling_studio.db
|
|
|
|
USER appuser
|
|
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
|
|
|
|
# --- Remote: lightweight, delegates to Docling Serve ---
|
|
FROM base AS remote
|
|
ENV CONVERSION_ENGINE=remote
|
|
|
|
# --- Local: full Docling in-process ---
|
|
FROM base AS local
|
|
|
|
USER root
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
libgl1 \
|
|
libglib2.0-0 \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY requirements-local.txt .
|
|
RUN pip install --no-cache-dir torch torchvision --index-url https://download.pytorch.org/whl/cpu \
|
|
&& pip install --no-cache-dir -r requirements-local.txt
|
|
|
|
RUN chown -R appuser:appuser /app
|
|
USER appuser
|
|
ENV CONVERSION_ENGINE=local
|