# Hugging Face Spaces Dockerfile # GPU-enabled Django API for background removal FROM nvidia/cuda:12.4.1-cudnn-runtime-ubuntu22.04 # Set environment variables ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 ENV DEBIAN_FRONTEND=noninteractive ENV PORT=7860 ENV OMP_NUM_THREADS=4 # Install Python 3.11 and system dependencies RUN apt-get update && \ apt-get install -y --no-install-recommends software-properties-common && \ add-apt-repository ppa:deadsnakes/ppa && \ apt-get update && \ apt-get install -y --no-install-recommends \ python3.11 python3.11-venv python3.11-distutils \ libgl1 libglib2.0-0 libsm6 libxext6 libxrender1 libgomp1 curl && \ rm -rf /var/lib/apt/lists/* && \ ln -sf /usr/bin/python3.11 /usr/bin/python && \ ln -sf /usr/bin/python3.11 /usr/bin/python3 && \ curl -sS https://bootstrap.pypa.io/get-pip.py | python WORKDIR /app # Install PyTorch matching system CUDA 12.4 (avoids version conflict) RUN pip install --no-cache-dir torch torchvision --index-url https://download.pytorch.org/whl/cu124 # Install remaining Python dependencies COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # Create non-root user (HF Spaces requirement) RUN useradd -m -u 1000 user ENV HOME=/home/user ENV HF_HOME=/home/user/.cache/huggingface # Pre-download AI models so they don't re-download on every restart USER user RUN mkdir -p /home/user/.u2net /home/user/.config/Ultralytics && \ python -c "from rembg import new_session; new_session('birefnet-general', providers=['CPUExecutionProvider']); new_session('isnet-general-use', providers=['CPUExecutionProvider'])" # Copy application code USER root COPY . . RUN chown -R user:user /app USER user EXPOSE 7860 # Health check (shorter start period since models are pre-cached) HEALTHCHECK --interval=30s --timeout=30s --start-period=120s --retries=5 \ CMD curl -f http://localhost:7860/api/transparent/health/ || exit 1 # --noreload prevents double model loading from Django's autoreload CMD ["python", "manage.py", "runserver", "0.0.0.0:7860", "--noreload"]