Dockerfile 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. # 使用多阶段构建优化镜像大小
  2. # 第一阶段:构建阶段
  3. FROM nvcr.io/nvidia/cuda:12.4.1-cudnn8-devel-ubuntu22.04 AS builder
  4. # 设置环境变量
  5. ENV PYTHONDONTWRITEBYTECODE=1
  6. ENV PYTHONUNBUFFERED=1
  7. ENV DEBIAN_FRONTEND=noninteractive
  8. # 安装系统依赖
  9. RUN apt-get update && apt-get install -y --no-install-recommends \
  10. wget \
  11. curl \
  12. git \
  13. vim \
  14. ffmpeg \
  15. libsm6 \
  16. libxext6 \
  17. libxrender-dev \
  18. libglib2.0-0 \
  19. && rm -rf /var/lib/apt/lists/*
  20. # 安装Miniconda
  21. RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh \
  22. && bash miniconda.sh -b -p /opt/conda \
  23. && rm miniconda.sh
  24. # 设置conda环境
  25. ENV PATH=/opt/conda/bin:$PATH
  26. # 创建conda环境
  27. RUN conda create -n livetalking python=3.10 -y
  28. # 激活conda环境
  29. ENV PATH=/opt/conda/envs/livetalking/bin:$PATH
  30. # 设置pip镜像源
  31. RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
  32. # 安装PyTorch和依赖
  33. RUN pip install torch==2.5.0 torchvision==0.20.0 torchaudio==2.5.0 --index-url https://download.pytorch.org/whl/cu124
  34. # 复制requirements文件
  35. COPY requirements.txt .
  36. # 安装Python依赖
  37. RUN pip install -r requirements.txt
  38. # 第二阶段:运行时阶段
  39. FROM nvcr.io/nvidia/cuda:12.4.1-runtime-ubuntu22.04
  40. # 设置环境变量
  41. ENV PYTHONDONTWRITEBYTECODE=1
  42. ENV PYTHONUNBUFFERED=1
  43. ENV DEBIAN_FRONTEND=noninteractive
  44. # 安装运行时依赖
  45. RUN apt-get update && apt-get install -y --no-install-recommends \
  46. ffmpeg \
  47. libsm6 \
  48. libxext6 \
  49. libxrender-dev \
  50. libglib2.0-0 \
  51. && rm -rf /var/lib/apt/lists/*
  52. # 从构建阶段复制conda环境
  53. COPY --from=builder /opt/conda /opt/conda
  54. # 设置环境变量
  55. ENV PATH=/opt/conda/envs/livetalking/bin:$PATH
  56. # 创建工作目录
  57. WORKDIR /app
  58. # 复制项目文件
  59. COPY . /app/
  60. # 创建模型目录
  61. RUN mkdir -p /app/models
  62. # 设置权限
  63. RUN chmod +x /app/app.py
  64. # 暴露端口
  65. EXPOSE 7860 8080
  66. # 健康检查
  67. HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
  68. CMD curl -f http://localhost:7860/health || exit 1
  69. # 启动命令
  70. CMD ["python", "app.py"]