champ_demo / Dockerfile
yoyozs11's picture
Upload Dockerfile with huggingface_hub
7a4f7d7 verified
Raw
History Blame Contribute Delete
1.98 kB
# 1. 使用 NVIDIA 官方提供的 CUDA 12.1 + Python 3.10 基礎鏡像
FROM nvidia/cuda:12.1.1-cudnn8-runtime-ubuntu22.04
# 設定環境變數,防止互動式安裝卡住
ENV DEBIAN_FRONTEND=noninteractive
ENV PYTHONUNBUFFERED=1
ENV PATH="/home/user/.local/bin:${PATH}"
# 🌟【最核心關鍵行】
# 強行把 user 的本地私有套件庫路徑註冊進 Linux 全域變數,
# 這樣 app.py 在開機後動態 pip install 的 smplx、pytorch-lightning,子程序開新視窗時才讀得到!
ENV PYTHONPATH="/home/user/.local/lib/python3.10/site-packages:${PYTHONPATH}"
# 2. 安裝系統等級依賴 (FFmpeg, wget, Mesa 3D 庫)
RUN apt-get update && apt-get install -y \
python3.10 python3-pip python3.10-venv \
ffmpeg git wget xz-utils \
libgl1-mesa-glx libglib2.0-0 libosmesa6-dev libegl1-mesa-dev freeglut3-dev \
&& rm -rf /var/lib/apt/lists/*
# 建立 python 指向 python3.10 的軟連結
RUN ln -s /usr/bin/python3.10 /usr/bin/python
# 3. 建立標準 user 使用者 (Hugging Face Spaces 安全規範)
RUN useradd -m -u 1000 user
USER user
ENV HOME=/home/user
WORKDIR $HOME/app
# 4. 🌟【如你所願:僅把下載 Blender 留在這裡】在 Build 階段下載並配置 Linux 版 Blender 3.6.0
RUN wget https://download.blender.org/release/Blender3.6/blender-3.6.0-linux-x64.tar.xz \
&& tar -xf blender-3.6.0-linux-x64.tar.xz \
&& rm blender-3.6.0-linux-x64.tar.xz \
&& mv blender-3.6.0-linux-x64 blender
# 5. 先複製依賴清單進貨櫃安裝
COPY --chown=user:user requirements.txt $HOME/app/
# 6. 安裝 Python 基本與前處理輕量依賴
RUN pip3 install --no-cache-dir --upgrade pip && \
pip3 install --no-cache-dir -r requirements.txt
# 7. 將剩餘的所有文字程式碼、configs 複製進貨櫃
COPY --chown=user:user . $HOME/app
# 8. 曝露 Gradio 預設端口
EXPOSE 7860
# 9. 啟動指令:直接呼叫最外層的 app.py
CMD ["python3", "app.py"]