FROM python:3.11-slim # Set working directory WORKDIR /app # Create non-root user for HuggingFace Spaces RUN useradd -m -u 1000 user USER user ENV HOME=/home/user \ PATH=/home/user/.local/bin:$PATH # Set working directory to user's home WORKDIR $HOME/app # Install system dependencies as root temporarily USER root RUN apt-get update && apt-get install -y \ git \ wget \ gnupg \ libglib2.0-0 \ libnss3 \ libnspr4 \ libatk1.0-0 \ libatk-bridge2.0-0 \ libcups2 \ libdrm2 \ libxkbcommon0 \ libxcomposite1 \ libxdamage1 \ libxfixes3 \ libxrandr2 \ libgbm1 \ libasound2 \ libpango-1.0-0 \ libcairo2 \ && rm -rf /var/lib/apt/lists/* # Switch back to user USER user # Copy requirements first COPY --chown=user requirements.txt . # Install Python dependencies RUN pip install --no-cache-dir --upgrade pip && \ pip install --no-cache-dir -r requirements.txt # Install Playwright and browsers RUN playwright install chromium # Copy the rest of the application COPY --chown=user . . # Set environment variables ENV PYTHONPATH=$HOME/app ENV PYTHONUNBUFFERED=1 ENV GRADIO_SERVER_NAME=0.0.0.0 ENV GRADIO_SERVER_PORT=7860 # Expose port 7860 for Gradio EXPOSE 7860 # Run the application CMD ["python", "app.py"]