| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- # 使用多阶段构建优化镜像大小
- # 第一阶段:构建阶段
- 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"]
|