FROM python:3.10-slim # Set working directory WORKDIR /app # Install system dependencies RUN apt-get update && apt-get install -y \ libgl1 \ libglib2.0-0 \ libsm6 \ libxext6 \ libxrender-dev \ libgomp1 \ git \ && rm -rf /var/lib/apt/lists/* # 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 . . # Create directories for uploads and results RUN mkdir -p uploads results # Handle Firebase credentials from environment variable (for Hugging Face Spaces secrets) # This allows the credentials to be passed as a secret and written to file at runtime RUN echo '#!/bin/bash' > /entrypoint.sh && \ echo 'if [ -n "$FIREBASE_CREDENTIALS" ]; then' >> /entrypoint.sh && \ echo ' echo "$FIREBASE_CREDENTIALS" > colorize-662df-firebase-adminsdk-fbsvc-e080668793.json' >> /entrypoint.sh && \ echo 'fi' >> /entrypoint.sh && \ echo 'exec "$@"' >> /entrypoint.sh && \ chmod +x /entrypoint.sh # Expose port (Hugging Face Spaces uses port 7860) EXPOSE 7860 # Set environment variables ENV PYTHONUNBUFFERED=1 ENV BASE_URL=${SPACE_HOST} ENV PORT=7860 # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ CMD python -c "import requests; requests.get('http://localhost:7860/health', timeout=5)" || exit 1 # Set entrypoint ENTRYPOINT ["/entrypoint.sh"] # Run the application (port will be set via environment variable) CMD ["sh", "-c", "uvicorn app.main:app --host 0.0.0.0 --port ${PORT:-7860}"]