File size: 1,270 Bytes
bab1f39 636be51 bab1f39 90daa25 5c1009e fadea1a 636be51 bab1f39 fadea1a 1b26681 fadea1a f3285b1 fadea1a 52cb544 29c1018 85c98d3 fadea1a bab1f39 f3285b1 be8da12 fadea1a 02d5064 fadea1a 90daa25 fadea1a 1b26681 fadea1a 1b26681 bab1f39 e28964d 636be51 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
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"] |