Dockerfile 构建
# 第一阶段:构建环境
FROM nvidia/cuda:12.2.0-runtime-ubuntu20.04 as builder# 设置清华源(系统级别)
RUN sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list && \sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list# 安装 Python 和基础工具
RUN apt-get update && apt-get install -y \python3 \python3-pip \python3-dev \build-essential \libgl1 \libglib2.0-0 \&& rm -rf /var/lib/apt/lists/*# 设置工作目录
WORKDIR /app# 复制requirements文件
COPY requirements.txt .# 设置pip清华源并安装所有依赖
RUN pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple \--no-warn-script-location \-r requirements.txt# 复制项目文件
COPY . .# 第二阶段:最小化生产镜像
FROM nvidia/cuda:12.2.0-runtime-ubuntu20.04# 设置清华源
RUN sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list && \sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list# 仅安装运行时需要的依赖
RUN apt-get update && apt-get install -y \python3 \python3-pip \libgl1 \libglib2.0-0 \&& rm -rf /var/lib/apt/lists/*# 设置工作目录
WORKDIR /app# 从构建阶段复制已安装的Python包
COPY --from=builder /usr/local/lib/python3.8/dist-packages /usr/local/lib/python3.8/dist-packages
COPY --from=builder /usr/local/bin /usr/local/bin# 从构建阶段复制项目文件
COPY --from=builder /app /app# 创建非root用户(安全最佳实践)
RUN groupadd -r appuser && useradd -r -g appuser appuser && \chown -R appuser:appuser /app
USER appuser# 设置环境变量
ENV PYTHONPATH=/app
ENV PYTHONUNBUFFERED=1# 暴露端口(如果需要)
# EXPOSE 8080 8081# 健康检查
HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \CMD python -c "import torch; print('CUDA available:', torch.cuda.is_available())" || exit 1# 设置入口点
ENTRYPOINT ["python"]
CMD ["your_app.py"]