yimlo / Dockerfile
One2SkipAfew's picture
Upload Dockerfile
fc835e0 verified
Raw
History Blame Contribute Delete
1.35 kB
# Use an official Python runtime as a parent image
FROM python:3.10-slim
# Install necessary system dependencies for OpenCV/EasyOCR (e.g. libgl)
RUN apt-get update && apt-get install -y --no-install-recommends \
libglib2.0-0 \
libgl1 \
&& rm -rf /var/lib/apt/lists/*
# Hugging Face Spaces requires port 7860
EXPOSE 7860
# Create a non-root user with UID 1000 (required by HF Spaces)
RUN useradd -m -u 1000 user
WORKDIR /home/user/app
# Copy the requirements file and install dependencies
# Note: Use --extra-index-url for CPU-only torch to save space in the image
COPY --chown=user requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Copy the application code (routers, dependencies, core services)
COPY --chown=user dependencies.py .
COPY --chown=user searchworks.py .
COPY --chown=user ocr_service.py .
COPY --chown=user routers/ ./routers/
# Switch to the non-root user first so caches go to /home/user
USER user
# Pre-download the EasyOCR model weights at build time
# English ('en') is required for our identity and address verification.
RUN python -c "import easyocr; reader = easyocr.Reader(['en'], gpu=False); print('--- [BUILD] EasyOCR Model Cached ---')"
# Command to run the application on the port required by HF Spaces
CMD ["uvicorn", "ocr_service:app", "--host", "0.0.0.0", "--port", "7860"]