FROM python:3.9-slim WORKDIR /app # Install system dependencies for document processing RUN apt-get update && apt-get install -y \ ffmpeg \ libmagic1 \ poppler-utils \ && rm -rf /var/lib/apt/lists/* # Copy requirements first for better caching COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # Copy application code COPY . . # Create a non-root user (better security for Hugging Face) RUN useradd -m -u 1000 user RUN chown -R user:user /app USER user # Create temp directory for file processing RUN mkdir -p /tmp/materials # Set environment variables ENV PYTHONUNBUFFERED=1 ENV TRANSFORMERS_CACHE=/tmp/transformers_cache # Expose port (Hugging Face uses port 7860 by default) EXPOSE 7860 # Health check command (Hugging Face Spaces requirement) HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \ CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:7860/health')" # Start the application with gunicorn for production CMD uvicorn app:app --host 0.0.0.0 --port 7860 --workers 1