42 lines
1.6 KiB
Docker
42 lines
1.6 KiB
Docker
|
# 选择一个包含 Python 的基础镜像,考虑一个带编译工具的以防某些库需要编译
|
|||
|
FROM nvidia/cuda:12.6.0-devel-ubuntu22.04
|
|||
|
|
|||
|
# 设置时区(可选,但对于日志时间戳有好处)
|
|||
|
ENV TZ=Asia/Shanghai
|
|||
|
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
|||
|
|
|||
|
# 设置工作目录
|
|||
|
WORKDIR /app
|
|||
|
|
|||
|
# 安装系统依赖(例如 OpenCV 可能需要)
|
|||
|
# libgl1-mesa-glx 是常见的桌面OpenGL库,对于 headless server 来说,libgl1可能就够了
|
|||
|
# 有些版本的OpenCV需要特定的共享库
|
|||
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|||
|
libgl1 \
|
|||
|
libglib2.0-0 libsm6 libxext6 libxrender-dev \
|
|||
|
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
|||
|
|
|||
|
# 安装 Python 和 pip
|
|||
|
RUN apt-get update && apt-get install -y python3 python3-pip
|
|||
|
|
|||
|
ENV OMP_NUM_THREADS=1
|
|||
|
|
|||
|
# 复制依赖文件并安装
|
|||
|
COPY requirements.txt .
|
|||
|
RUN pip install torch==2.6.0 torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
|
|||
|
RUN pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
|
|||
|
|
|||
|
# 复制整个应用代码和模型到容器中
|
|||
|
COPY . .
|
|||
|
|
|||
|
# 确保模型目录存在且模型已复制 (Dockerfile中的COPY指令会处理此问题)
|
|||
|
# 运行前检查模型路径是否正确:
|
|||
|
# RUN ls -lR app/models/ # 这可以帮助你在构建时调试路径问题
|
|||
|
|
|||
|
# 暴露API服务运行的端口
|
|||
|
EXPOSE 8000
|
|||
|
|
|||
|
# 容器启动时运行的命令
|
|||
|
# 使用 --host 0.0.0.0 使服务可以从容器外部访问
|
|||
|
# --reload 用于开发,生产中通常不使用
|
|||
|
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
|