FROM python:3.9-slim # System dependencies with improved virtual display and fonts support RUN apt-get update && \ apt-get install -y \ gcc \ libssl-dev \ wkhtmltopdf \ xvfb \ xfonts-75dpi \ xfonts-base \ fonts-liberation \ fonts-dejavu \ fonts-noto \ fonts-noto-cjk \ fonts-freefont-ttf \ && rm -rf /var/lib/apt/lists/* # Create non-root user and cache directory RUN useradd -m appuser && \ mkdir -p /app/.cache && \ chown -R appuser:appuser /app # Environment variables ENV HF_HOME=/app/.cache \ XDG_CACHE_HOME=/app/.cache \ PYTHONUNBUFFERED=1 \ PYTHONFAULTHANDLER=1 WORKDIR /app # Install Python dependencies COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # Configure accelerate for optimal performance RUN python -c "from accelerate.utils import write_basic_config; write_basic_config(mixed_precision='fp16')" && \ chown -R appuser:appuser /app/.cache # Verify wkhtmltopdf installation RUN which wkhtmltopdf && \ wkhtmltopdf --version # Copy application code COPY --chown=appuser:appuser . . # Switch to non-root user USER appuser # Runtime CMD ["gunicorn", "--bind", "0.0.0.0:5000", "--timeout", "900", "--workers", "1", "--preload", "app:app"]