# 使用多阶段构建优化镜像大小 # 第一阶段:构建阶段 FROM nvcr.io/nvidia/cuda:12.4.1-cudnn8-devel-ubuntu22.04 AS builder # 设置环境变量 ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 ENV DEBIAN_FRONTEND=noninteractive # 安装系统依赖 RUN apt-get update && apt-get install -y --no-install-recommends \ wget \ curl \ git \ vim \ ffmpeg \ libsm6 \ libxext6 \ libxrender-dev \ libglib2.0-0 \ && rm -rf /var/lib/apt/lists/* # 安装Miniconda RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh \ && bash miniconda.sh -b -p /opt/conda \ && rm miniconda.sh # 设置conda环境 ENV PATH=/opt/conda/bin:$PATH # 创建conda环境 RUN conda create -n livetalking python=3.10 -y # 激活conda环境 ENV PATH=/opt/conda/envs/livetalking/bin:$PATH # 设置pip镜像源 RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 安装PyTorch和依赖 RUN pip install torch==2.5.0 torchvision==0.20.0 torchaudio==2.5.0 --index-url https://download.pytorch.org/whl/cu124 # 复制requirements文件 COPY requirements.txt . # 安装Python依赖 RUN pip install -r requirements.txt # 第二阶段:运行时阶段 FROM nvcr.io/nvidia/cuda:12.4.1-runtime-ubuntu22.04 # 设置环境变量 ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 ENV DEBIAN_FRONTEND=noninteractive # 安装运行时依赖 RUN apt-get update && apt-get install -y --no-install-recommends \ ffmpeg \ libsm6 \ libxext6 \ libxrender-dev \ libglib2.0-0 \ && rm -rf /var/lib/apt/lists/* # 从构建阶段复制conda环境 COPY --from=builder /opt/conda /opt/conda # 设置环境变量 ENV PATH=/opt/conda/envs/livetalking/bin:$PATH # 创建工作目录 WORKDIR /app # 复制项目文件 COPY . /app/ # 创建模型目录 RUN mkdir -p /app/models # 设置权限 RUN chmod +x /app/app.py # 暴露端口 EXPOSE 7860 8080 # 健康检查 HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD curl -f http://localhost:7860/health || exit 1 # 启动命令 CMD ["python", "app.py"]