InfiniteTalk2-jobs / Dockerfile
renjunok's picture
update
ff460fa
# FROM python:3.14.2-slim-trixie
# FROM nvidia/cuda:13.0.2-cudnn-runtime-ubuntu24.04
FROM nvidia/cuda:12.4.1-cudnn-runtime-ubuntu22.04
# ============================================================
# 基础环境变量
# PYTHONUNBUFFERED 日志无缓冲(Jobs 实时输出)
# HF_HOME 是 Hugging Face 的“主目录”
# TRANSFORMERS_CACHE 是模型文件真正保存的地方
# ============================================================
ENV DEBIAN_FRONTEND=noninteractive \
PYTHONUNBUFFERED=1 \
GIT_LFS_SKIP_SMUDGE=1 \
HF_HOME=/home/hfuser/.cache/huggingface \
TRANSFORMERS_CACHE=/home/hfuser/.cache/huggingface/hub \
LANG=C.UTF-8
WORKDIR /app
# ========== 系统依赖 ==========
RUN apt-get update && apt-get install -y \
python3 \
python3-pip \
python3-venv \
git \
git-lfs \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# ============================================================
# 创建非 root 用户(HF 强烈推荐)
# - 不指定 UID,避免 UID=1000 冲突
# RUN useradd -m -u 1000 -s /bin/bash hfuser
# 创建 Hugging Face cache 目录并赋权
# ============================================================
RUN useradd -m hfuser \
&& mkdir -p /home/hfuser/.cache/huggingface \
&& chown -R hfuser:hfuser /home/hfuser
# ============================================================
# 拷贝应用代码
# - app/ 里包含 app.py + entrypoint.sh
# ============================================================
COPY app/ /app/
# COPY app/*.py ./
# entrypoint.sh 单独赋执行权限(避免整个目录 755)
RUN chmod +x /app/entrypoint.sh \
&& chown -R hfuser:hfuser /app
# ============================================================
# 切换到非 root 用户
# ============================================================
USER hfuser
# ============================================================
# Python 依赖
# ============================================================
COPY requirements.txt /app/requirements.txt
# 创建虚拟环境
RUN python3 -m venv /app/venv \
&& /app/venv/bin/pip install --upgrade pip \
&& /app/venv/bin/pip install --no-cache-dir -r /app/requirements.txt
# venv 创建完成后,再加入 PATH
ENV PATH="/app/venv/bin:$PATH"
# ============================================================
# 拉 InfiniteTalk 源码(不拉权重)
# - 权重由构建时 hf_hub_download 获取
# ============================================================
RUN git clone https://github.com/MeiGen-AI/InfiniteTalk.git /app/InfiniteTalk \
&& cd /app/InfiniteTalk \
&& git checkout fd631497254e065777f2b2d0642de3600d674e24
# 增加环境变量 PYTHONPATH,以确保 Python 能找到 indextts 模块
ENV PYTHONPATH=/app/InfiniteTalk:${PYTHONPATH}
# ============================================================
# 🔥 build 阶段下载模型权重
# ============================================================
RUN python /app/download_models.py
# 7. 默认入口
ENTRYPOINT ["/app/entrypoint.sh"]
# 还要合成最终视频等流程