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"] |