# 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"]