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