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