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).
77 lines
2.1 KiB
Docker
77 lines
2.1 KiB
Docker
# syntax=docker/dockerfile:1
|
|
# =============================================================================
|
|
# Docling Studio — single-image build (frontend + backend, multi-target)
|
|
#
|
|
# Usage:
|
|
# docker build --target remote -t docling-studio:remote .
|
|
# docker build --target local -t docling-studio:local .
|
|
# =============================================================================
|
|
|
|
# --- Stage 1: Build frontend assets ---
|
|
FROM node:20-alpine AS frontend-build
|
|
|
|
ARG APP_VERSION=dev
|
|
|
|
WORKDIR /build
|
|
COPY frontend/package*.json ./
|
|
RUN npm ci
|
|
COPY frontend/ .
|
|
RUN VITE_APP_VERSION=${APP_VERSION} npm run build
|
|
|
|
# --- Stage 2: Base runtime (Python + Nginx) ---
|
|
FROM python:3.12-slim AS base
|
|
|
|
ARG APP_VERSION=dev
|
|
ENV APP_VERSION=${APP_VERSION}
|
|
|
|
# System deps: poppler (pdf2image), nginx
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
poppler-utils \
|
|
nginx \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Python deps (common)
|
|
WORKDIR /app
|
|
COPY document-parser/requirements.txt .
|
|
RUN pip install --no-cache-dir -r requirements.txt
|
|
|
|
# Backend code
|
|
COPY document-parser/ .
|
|
|
|
# Frontend static files
|
|
COPY --from=frontend-build /build/dist /usr/share/nginx/html
|
|
|
|
# Nginx config
|
|
COPY nginx.conf /etc/nginx/sites-enabled/default
|
|
|
|
# Non-root user
|
|
RUN useradd --create-home --shell /bin/bash appuser
|
|
|
|
# Data directories
|
|
RUN mkdir -p /app/uploads /app/data && chown -R appuser:appuser /app
|
|
|
|
ENV UPLOAD_DIR=/app/uploads
|
|
ENV DB_PATH=/app/data/docling_studio.db
|
|
|
|
EXPOSE 3000
|
|
|
|
CMD ["sh", "-c", "nginx && exec su appuser -c 'uvicorn main:app --host 127.0.0.1 --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
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
libgl1 \
|
|
libglib2.0-0 \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY document-parser/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
|
|
ENV CONVERSION_ENGINE=local
|