VNEWS / Dockerfile
bep40's picture e95dd26 verified
Raw
History Blame Contribute Delete
1.91 kB
FROM python:3.12-slim
WORKDIR /app
RUN echo "[BUILD] step1: apt-get update+install ffmpeg + Vietnamese fonts" && \
apt-get update && apt-get install -y --no-install-recommends \
ffmpeg \
fonts-dejavu-core \
fonts-noto \
fonts-noto-cjk \
fonts-noto-color-emoji \
fonts-liberation \
fonts-freefont-ttf \
libfreetype6 \
&& rm -rf /var/lib/apt/lists/* && \
echo "[BUILD] step1 done"
RUN echo "[BUILD] step2: pip base pkgs (bs4/lxml)" && \
pip install --no-cache-dir "beautifulsoup4>=4.12" lxml && \
echo "[BUILD] step2 done"
RUN echo "[BUILD] step3: pip main pkgs" && \
pip install --no-cache-dir fastapi uvicorn requests beautifulsoup4 jinja2 yt-dlp huggingface_hub gTTS pillow edge-tts python-dateutil httpx pycryptodome && \
echo "[BUILD] step3 done"
COPY requirements.txt .
RUN echo "[BUILD] step4: pip requirements.txt" && \
pip install --no-cache-dir -r requirements.txt || true && \
echo "[BUILD] step4 done"
COPY . .
EXPOSE 7860
RUN echo "[BUILD] step5: setup Vietnamese font symlink" && \
mkdir -p /usr/share/fonts/truetype/vn && \
# Prefer Noto Sans for Vietnamese - it has full diacritic support
if [ -f /usr/share/fonts/truetype/noto/NotoSans-Regular.ttf ]; then \
ln -sf /usr/share/fonts/truetype/noto/NotoSans-Regular.ttf /usr/share/fonts/truetype/vn/VNFont.ttf; \
elif [ -f /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf ]; then \
ln -sf /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf /usr/share/fonts/truetype/vn/VNFont.ttf; \
ln -sf /usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf /usr/share/fonts/truetype/vn/VNFont-Bold.ttf; \
fi; \
fc-cache -f -v || true; \
date > /app/.build_done && \
echo "[BUILD] step5 done"
CMD ["uvicorn", "_run:app", "--host", "0.0.0.0", "--port", "7860"]
# v3.0-vn-font-fix-short-video-2026-07-19