TextPhantom-v4.0.0 / Dockerfile
plan291037's picture
harden build: non-fatal model prebake + log-level info
d98cb79
Raw
History Blame Contribute Delete
1.69 kB
FROM python:3.11-slim
WORKDIR /app
# libgl1 / libglib2.0-0 are needed by opencv-python-headless.
RUN apt-get update \
&& apt-get install -y --no-install-recommends libgl1 libglib2.0-0 \
&& rm -rf /var/lib/apt/lists/*
COPY requirements.txt ./requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
# Manga text-block detector (Kiuyha/Manga-Bubble-YOLO, Apache-2.0) — baked
# into the image at BUILD time so boot never depends on a runtime download.
# The backend's auto-download (backend/render/textblocks.py) remains as a
# fallback when TP_TEXTBLOCK_MODEL points somewhere else.
# NON-FATAL: if the external model download fails/moves, do NOT abort the whole
# build — the backend downloads it lazily at runtime (backend/render/textblocks.py).
# A failed prebake just means the first AI-text request pays a one-time fetch.
RUN mkdir -p models \
&& (python -c "import urllib.request, os; urllib.request.urlretrieve('https://huggingface.co/Kiuyha/Manga-Bubble-YOLO/resolve/main/onnx/yolo26s.onnx', 'models/manga-bubble-yolo.onnx'); s = os.path.getsize('models/manga-bubble-yolo.onnx'); assert s > 1000000, s; print('text-block model baked into image:', s, 'bytes')" \
|| echo 'WARN: text-block model prebake failed; runtime fallback will fetch it')
COPY backend ./backend
ENV PORT=7860
EXPOSE 7860
# NOTE: --log-level info (was warning) so the container prints "Uvicorn running
# on 0.0.0.0:7860" + the app's boot line + any startup traceback. Turn back to
# warning once the Space is healthy again.
CMD ["bash", "-lc", "uvicorn backend.main:app --host 0.0.0.0 --port ${PORT} --no-access-log --log-level info --ws-ping-interval 45 --ws-ping-timeout 45"]