Files
rapidocr/docker/Dockerfile.base
T
locviettriandClaude Opus 4.6 1f78b76eb4 feat(docker): add per-engine Docker dev environments (#649)
Replace the single legacy Dockerfile (rapidocr_api only) with 7
per-engine development images covering all supported inference backends:

- onnxruntime-cpu: ONNX Runtime on CPU (python:3.10-slim-bookworm)
- onnxruntime-gpu: ONNX Runtime with CUDA (nvidia/cuda:12.4.1)
- tensorrt: NVIDIA TensorRT (nvcr.io/nvidia/deepstream:7.0-gc-triton-devel)
- paddle: PaddlePaddle CPU
- openvino: Intel OpenVINO
- pytorch: PyTorch CPU
- mnn: Alibaba MNN

Infrastructure:
- Dockerfile.base: shared foundation for CPU variants
- docker-compose.yaml: all 7 services with shared model volume
- Makefile: make build-*/test-*/shell-* convenience commands
- .dockerignore: excludes .git, models, build artifacts

Key design decisions:
- PYTHONPATH-based imports (setup.py incompatible with pip editable install)
- Named volume (rapidocr-models) for persistent model cache across rebuilds
- Source bind-mounted at runtime for live editing
- tensorrt pinned to 8.6.x + cuda-python 12.x (matching DeepStream 7.0)

All 7 images built and tested with full OCR pipeline inference.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 17:29:41 +08:00

36 lines
995 B
Docker

FROM python:3.10-slim-bookworm
ENV DEBIAN_FRONTEND=noninteractive
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ENV PYTHONPATH=/app
WORKDIR /app
# System dependencies for opencv, pyclipper, shapely C extensions
RUN apt-get update && apt-get install -y --no-install-recommends \
libgl1 \
libglib2.0-0 \
libsm6 \
libxext6 \
libxrender1 \
gcc \
g++ \
&& rm -rf /var/lib/apt/lists/*
# Copy only requirements first for layer caching
COPY python/requirements.txt /tmp/requirements.txt
# Install core deps with opencv-headless (no GUI needed in container)
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -r /tmp/requirements.txt && \
pip uninstall -y opencv-python 2>/dev/null; \
pip install --no-cache-dir opencv-python-headless && \
pip install --no-cache-dir pytest && \
rm /tmp/requirements.txt
# Copy source (bind-mounted at runtime for live editing via docker-compose)
COPY python/ /app/
CMD ["bash"]