File size: 3,049 Bytes
10b70a9
 
 
 
 
 
 
 
 
 
 
d976baa
dbff676
d976baa
dbff676
 
 
 
d976baa
dbff676
 
d976baa
dbff676
 
 
 
 
 
 
 
 
d976baa
 
dbff676
d976baa
 
10b70a9
 
 
 
 
 
 
 
 
111ba62
a0a228b
5e1192b
 
 
e6ba6db
0f0f717
ed52b73
d976baa
264ac69
d976baa
 
0f0f717
ed52b73
 
264ac69
d976baa
5e1192b
5afbe18
e6ba6db
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
54
55
56
57
58
59
60
61
62
63
64
65
FROM python:3.10-slim

ENV PYTHONUNBUFFERED=1
ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        ffmpeg \
        libsm6 \
        libxext6 \
        fontconfig \
        imagemagick \
        ghostscript && \
    # Modify ImageMagick policy to be less restrictive for TextClip
    # This entire block is a single shell command executed by RUN
    # The semicolon after the fi is important for shell syntax if followed by &&
    # We ensure the subshell commands are properly chained with && inside the subshell
    # and the whole subshell is one command in the RUN sequence.
    ( \
        POLICY_FILE=$(find /etc/ImageMagick* -name policy.xml -print -quit 2>/dev/null) && \
        if [ -n "$POLICY_FILE" ] && [ -f "$POLICY_FILE" ]; then \
            echo "INFO: Modifying ImageMagick policy file: $POLICY_FILE"; \
            sed -i 's/<policy domain="coder" rights="none" pattern="PS" \/>/<!-- & -->/' "$POLICY_FILE" && \
            sed -i 's/<policy domain="coder" rights="none" pattern="PS2" \/>/<!-- & -->/' "$POLICY_FILE" && \
            sed -i 's/<policy domain="coder" rights="none" pattern="PS3" \/>/<!-- & -->/' "$POLICY_FILE" && \
            sed -i 's/<policy domain="coder" rights="none" pattern="EPS" \/>/<!-- & -->/' "$POLICY_FILE" && \
            sed -i 's/<policy domain="coder" rights="none" pattern="PDF" \/>/<!-- & -->/' "$POLICY_FILE" && \
            sed -i 's/<policy domain="coder" rights="none" pattern="XPS" \/>/<!-- & -->/' "$POLICY_FILE" && \
            sed -i 's/<policy domain="coder" rights="none" pattern="LABEL" \/>/<!-- & -->/' "$POLICY_FILE" && \
            sed -i 's/<policy domain="coder" rights="none" pattern="TEXT" \/>/<!-- & -->/' "$POLICY_FILE" && \
            sed -i 's/<policy domain="path" rights="none" pattern="@*" \/>/<!-- & -->/' "$POLICY_FILE" && \
            echo "INFO: ImageMagick policy potentially updated."; \
        else \
            echo "WARNING: ImageMagick policy.xml not found or find command failed. TextClip might fail."; \
        fi \
    ) && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# Create directory for custom fonts and copy your font file(s)
RUN mkdir -p /usr/local/share/fonts/truetype/mycustomfonts
COPY assets/fonts/arial.ttf /usr/local/share/fonts/truetype/mycustomfonts/arial.ttf 

# Rebuild font cache AFTER copying fonts
RUN fc-cache -f -s -v

# Create a non-root user and group
ARG APP_USER_UID=1000
ARG APP_USER_GID=1000
RUN groupadd --gid $APP_USER_GID appgroup && \
    useradd --uid $APP_USER_UID --gid appgroup --shell /bin/bash --create-home appuser

WORKDIR /home/appuser/app
COPY --chown=appuser:appgroup requirements.txt ./

USER appuser
ENV PATH="/home/appuser/.local/bin:${PATH}" 

RUN python -m pip install --no-cache-dir --upgrade pip
RUN python -m pip install --no-cache-dir -r requirements.txt

COPY --chown=appuser:appgroup . .

EXPOSE 8501
CMD ["streamlit", "run", "app.py", "--server.headless=true", "--server.port=8501", "--server.fileWatcherType=none"]