Netra / Dockerfile
chikentikka's picture
Add Dockerfile for Hugging Face Spaces deploy (16GB RAM)
166d3d8
Raw
History Blame Contribute Delete
1.43 kB
# NETRA backend — Hugging Face Spaces (Docker SDK).
# HF free tier gives 16GB RAM / 2 vCPU, so the full torch + YOLO + TrOCR
# pipeline fits comfortably (unlike a 512MB host). HF serves on port 7860.
FROM python:3.11-slim
# OpenCV runtime libs (opencv-python-headless still needs libGL / glib).
RUN apt-get update && apt-get install -y --no-install-recommends \
libgl1 libglib2.0-0 \
&& rm -rf /var/lib/apt/lists/*
# HF Spaces run containers as uid 1000. Create a matching user and point all
# model/caches at writable paths it owns.
RUN useradd -m -u 1000 user
ENV HOME=/home/user \
PATH=/home/user/.local/bin:$PATH \
HF_HOME=/home/user/.cache/huggingface \
YOLO_CONFIG_DIR=/home/user/.config/Ultralytics \
PYTHONUNBUFFERED=1
# The app writes data/ under BASE_DIR (=/app), so /app must be user-owned.
RUN mkdir -p /app && chown -R user:user /app
USER user
WORKDIR /app
# Install deps first for layer caching (CPU torch via the index in requirements).
COPY --chown=user:user backend/requirements.txt ./backend/requirements.txt
RUN pip install --no-cache-dir --user -r backend/requirements.txt
# App code (ultimate_edge_preprocessor.py already lives inside backend/).
COPY --chown=user:user backend/ ./backend/
# Run from backend/ so `app.main` and `ultimate_edge_preprocessor` import cleanly.
WORKDIR /app/backend
EXPOSE 7860
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "7860"]