File size: 3,635 Bytes
10b70a9
 
 
 
 
 
 
 
 
 
 
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
66
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 && \ # Often needed by ImageMagick for text/vector handling
    # Modify ImageMagick policy to be less restrictive for TextClip
    # This comments out common restrictive policies. Be aware of security implications if image content is user-supplied.
    # For a more targeted approach, identify the exact policy causing the block.
    # Common paths for policy.xml: /etc/ImageMagick-6/policy.xml or /etc/ImageMagick/policy.xml
    # The path might vary based on ImageMagick version (e.g., ImageMagick-6 or ImageMagick-7)
    # First, find the policy file path
    ( \
        POLICY_FILE=$(find /etc/ImageMagick* -name policy.xml | head -n 1) && \
        if [ -f "$POLICY_FILE" ]; then \
            echo "INFO: Modifying ImageMagick policy file: $POLICY_FILE"; \
            sed -i 's/<policy domain="coder" rights="none" pattern="PS" \/>/<!-- <policy domain="coder" rights="none" pattern="PS" \/> -->/' "$POLICY_FILE"; \
            sed -i 's/<policy domain="coder" rights="none" pattern="PS2" \/>/<!-- <policy domain="coder" rights="none" pattern="PS2" \/> -->/' "$POLICY_FILE"; \
            sed -i 's/<policy domain="coder" rights="none" pattern="PS3" \/>/<!-- <policy domain="coder" rights="none" pattern="PS3" \/> -->/' "$POLICY_FILE"; \
            sed -i 's/<policy domain="coder" rights="none" pattern="EPS" \/>/<!-- <policy domain="coder" rights="none" pattern="EPS" \/> -->/' "$POLICY_FILE"; \
            sed -i 's/<policy domain="coder" rights="none" pattern="PDF" \/>/<!-- <policy domain="coder" rights="none" pattern="PDF" \/> -->/' "$POLICY_FILE"; \
            sed -i 's/<policy domain="coder" rights="none" pattern="XPS" \/>/<!-- <policy domain="coder" rights="none" pattern="XPS" \/> -->/' "$POLICY_FILE"; \
            sed -i 's/<policy domain="coder" rights="none" pattern="LABEL" \/>/<!-- <policy domain="coder" rights="none" pattern="LABEL" \/> -->/' "$POLICY_FILE"; \
            sed -i 's/<policy domain="coder" rights="none" pattern="TEXT" \/>/<!-- <policy domain="coder" rights="none" pattern="TEXT" \/> -->/' "$POLICY_FILE"; \
            sed -i 's/<policy domain="path" rights="none" pattern="@*" \/>/<!-- <policy domain="path" rights="none" pattern="@*" \/> -->/' "$POLICY_FILE"; \
            echo "INFO: ImageMagick policy potentially updated."; \
        else \
            echo "WARNING: ImageMagick policy.xml not found. 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"]