# Dockerfile for Hugging Face Spaces (Docker SDK) # This is the main Dockerfile used by HF Spaces when sdk: docker is set FROM python:3.10-slim # System dependencies (ADD GIT HERE) RUN apt-get update && apt-get install -y \ gcc \ g++ \ cmake \ libopenblas-dev \ libomp-dev \ curl \ git \ && rm -rf /var/lib/apt/lists/* # Set working directory WORKDIR /app # Set environment variables to prevent warnings # Fix libgomp OMP_NUM_THREADS warning ENV OMP_NUM_THREADS=4 ENV MKL_NUM_THREADS=4 # Copy requirements first for better caching COPY requirements.txt . # Install Python dependencies RUN pip install --no-cache-dir -r requirements.txt # Copy application code COPY . . # Expose ports # 7860: Gradio UI (primary, exposed by HF Spaces) # 5001: Flask API (runs in background thread) EXPOSE 7860 5001 # Health check - check Gradio endpoint HEALTHCHECK --interval=30s --timeout=30s --start-period=60s --retries=3 \ CMD curl -f http://localhost:7860/ || exit 1 # Run main.py (starts both Gradio and Flask API) # main.py starts Flask API in background thread and launches Gradio # # ZeroGPU API Configuration (optional): # Set these environment variables in HF Spaces secrets for ZeroGPU integration: # - USE_ZERO_GPU=true (enable ZeroGPU API) # - ZERO_GPU_API_URL=https://-8000.proxy.runpod.net (Runpod proxy URL) # Example: https://bm9njt1ypzvuqw-8000.proxy.runpod.net # - ZERO_GPU_EMAIL=service@example.com (for service account mode) # - ZERO_GPU_PASSWORD=your-password (for service account mode) # - ZERO_GPU_PER_USER_MODE=true (for per-user mode, optional) # - ZERO_GPU_ADMIN_EMAIL=admin@example.com (for per-user mode) # - ZERO_GPU_ADMIN_PASSWORD=admin-password (for per-user mode) CMD ["python", "main.py"]