agri-drone-api / deploy /Dockerfile.hf
github-actions[bot]
deploy: HF Spaces snapshot from d9099ec
7c0570f
# HF Spaces Docker – AgriAnalyze API
FROM python:3.11-slim
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
PIP_NO_CACHE_DIR=1
# System deps for OpenCV / ultralytics
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
libgl1 libglib2.0-0 git \
&& rm -rf /var/lib/apt/lists/*
# HF Spaces requires a non-root user with uid 1000
RUN useradd -m -u 1000 user
USER user
ENV PATH="/home/user/.local/bin:$PATH"
WORKDIR /app
# Install CPU-only Python deps
COPY --chown=user requirements.lock.txt ./
RUN pip install --upgrade pip \
&& pip install --index-url https://download.pytorch.org/whl/cpu \
torch==2.5.1 torchvision==0.20.1 \
&& pip install \
numpy==2.3.4 pandas==2.3.3 pyyaml==6.0.3 omegaconf==2.3.0 \
loguru==0.7.3 pillow==12.0.0 \
fastapi==0.121.1 uvicorn==0.39.0 python-multipart==0.0.20 websockets==15.0.1 httpx==0.28.1 \
scipy==1.16.0 \
ultralytics==8.3.214 \
fpdf2 opencv-python-headless requests shapely pyproj geopandas scikit-learn
# Copy project
COPY --chown=user pyproject.toml ./
COPY --chown=user src ./src
COPY --chown=user configs ./configs
COPY --chown=user models ./models
RUN pip install --no-deps -e .
EXPOSE 7860
CMD ["python", "-m", "uvicorn", "agrianalyze.api.app:get_app", "--factory", "--host", "0.0.0.0", "--port", "7860", "--ws", "websockets"]