scribes-engine / Dockerfile
szoya's picture
Update Dockerfile
b290e53 verified
FROM python:3.9-slim
WORKDIR /app
# System deps (minimal and safe)
# libgl1 and libglib2.0-0 are required for OpenCV
# libgomp1 is required for PaddlePaddle math operations
RUN apt-get update && apt-get install -y \
libgl1 \
libglib2.0-0 \
libgomp1 \
git \
&& rm -rf /var/lib/apt/lists/*
# Upgrade pip stack
RUN pip install --no-cache-dir --upgrade pip setuptools wheel
# 🔒 HARD PIN numpy BEFORE paddle
# This prevents the binary incompatibility with newer numpy 2.x
RUN pip install --no-cache-dir "numpy==1.26.4"
# PaddlePaddle CPU (stable version 2.6.2 matches well with OCR 2.7.x)
RUN pip install --no-cache-dir paddlepaddle==2.6.2
# PaddleOCR + API stack
# 2.7.3 is a "Golden" version: very stable, no weird dependency bugs
RUN pip install --no-cache-dir \
paddleocr==2.7.3 \
opencv-python-headless==4.11.0.86 \
fastapi \
uvicorn \
python-multipart \
pillow
# Copy app code
COPY main.py .
# 🚫 DO NOT preload models during build
# NOTE: The first time you send a request, it will take ~20-40s to
# download the detection and classification models.
# Subsequent requests will be fast.
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"]