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