| FROM python:3.10-slim | |
| # Avoid interactive prompts during build | |
| ENV DEBIAN_FRONTEND=noninteractive | |
| # System dependencies | |
| RUN apt-get update && apt-get install -y \ | |
| libglib2.0-0 libsm6 libxext6 libxrender-dev poppler-utils \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # Create app directory and cache directories | |
| WORKDIR /app | |
| RUN mkdir -p /app/.cache && \ | |
| mkdir -p /.cache && \ | |
| chmod -R 777 /app && \ | |
| chmod -R 777 /.cache | |
| # Set environment variables for HuggingFace cache | |
| ENV HF_HOME=/app/.cache | |
| ENV TRANSFORMERS_CACHE=/app/.cache | |
| ENV HF_DATASETS_CACHE=/app/.cache | |
| ENV HUGGINGFACE_HUB_CACHE=/app/.cache | |
| ENV TORCH_HOME=/app/.cache | |
| # Copy files | |
| COPY app.py requirements.txt ./ | |
| # Install dependencies | |
| RUN pip install --no-cache-dir -r requirements.txt | |
| # Pre-download models to avoid runtime download issues (optional but recommended) | |
| # Uncomment the next line if you want to download models during build | |
| # RUN python -c "from transformers import DonutProcessor, VisionEncoderDecoderModel; DonutProcessor.from_pretrained('naver-clova-ix/donut-base'); VisionEncoderDecoderModel.from_pretrained('naver-clova-ix/donut-base')" | |
| # Expose port for Hugging Face | |
| EXPOSE 7860 | |
| # Run the app | |
| CMD ["python", "app.py"] |