puppeteer-api / Dockerfile
seungminkwak's picture
final: stable Dockerfile (cd /app, cu118 torch, preflight import)
3f609a0
# ============================================================
# Puppeteer GPU API Dockerfile (Final, CUDA 11.8 + A10G Ready)
# ============================================================
FROM nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04
# ------------------------------------------------------------
# OS Dependencies
# ------------------------------------------------------------
RUN apt-get update && apt-get install -y \
python3 python3-pip python3-venv \
git wget curl unzip ffmpeg bash \
libgl1 libglib2.0-0 \
&& rm -rf /var/lib/apt/lists/* \
&& ln -sf /usr/bin/python3 /usr/bin/python
# ------------------------------------------------------------
# Environment Variables
# ------------------------------------------------------------
ENV PIP_NO_CACHE_DIR=1 \
PYTHONUNBUFFERED=1 \
OMP_NUM_THREADS=1 \
MKL_THREADING_LAYER=SEQUENTIAL \
TMP_IN_DIR=/data/in \
RESULT_DIR=/data/results
# ------------------------------------------------------------
# Upgrade pip
# ------------------------------------------------------------
RUN python -m pip install --upgrade pip
# ------------------------------------------------------------
# Build Cache Busting (force rebuild)
# ------------------------------------------------------------
ARG CACHE_BUST=2025-11-05-03-30
# ------------------------------------------------------------
# Work Directory
# ------------------------------------------------------------
WORKDIR /app
# ------------------------------------------------------------
# Python Dependencies (Torch 제외)
# ------------------------------------------------------------
COPY requirements.txt /app/requirements.txt
RUN pip install --no-cache-dir -r /app/requirements.txt
# ------------------------------------------------------------
# CUDA용 PyTorch 설치 (cu118)
# ------------------------------------------------------------
RUN pip uninstall -y torch torchvision torchaudio || true
RUN pip install --no-cache-dir --index-url https://download.pytorch.org/whl/cu118 \
torch torchvision torchaudio
# ------------------------------------------------------------
# App Source
# ------------------------------------------------------------
COPY app.py /app/app.py
# ------------------------------------------------------------
# Puppeteer Vendor (벤더 코드)
# ------------------------------------------------------------
COPY third_party/Puppeteer /app/Puppeteer
RUN chmod +x /app/Puppeteer/demo_rigging.sh || true
# ------------------------------------------------------------
# Python Path / third_partys Compatibility
# ------------------------------------------------------------
ENV PYTHONPATH=/app:/app/Puppeteer:/app/Puppeteer/third_party:$PYTHONPATH
RUN ln -s /app/Puppeteer/third_party /app/third_partys || true \
&& touch /app/Puppeteer/third_party/__init__.py
# ------------------------------------------------------------
# Writable Paths
# ------------------------------------------------------------
RUN mkdir -p /data/in /data/results && chmod -R 777 /data
# ------------------------------------------------------------
# Entrypoint (cd /app + preflight import)
# ------------------------------------------------------------
RUN printf '#!/bin/bash\nset -euo pipefail\ncd /app\npython -c "import importlib, sys; import app; print(\\"[boot] app imported OK\\")" || exit 1\nuvicorn app:app --host 0.0.0.0 --port ${PORT:-7860}\n' > /app/run.sh \
&& chmod +x /app/run.sh
EXPOSE 7860
CMD ["sh", "-c", "/app/run.sh"]
# ------------------------------------------------------------
# End of Dockerfile
# force rebuild 2025-11-05
# ------------------------------------------------------------