GenStudio 推出 Infini 编码套餐(Coding Plan)GenStudio 推出 Infini 编码套餐(Coding Plan) ,接入多家顶尖厂商的主流编程模型了解更多
Skip to content

使用 pip 的 vLLM Dockerfile (Ubuntu 22.04)

下面是一个平台推荐的 Dockerfile 示例,用于为使用 pip 作为包管理器的 vLLM 应用构建 Docker 镜像。基于 Ubuntu 22.04。

提示

在平台预置镜像不满足要求,或无法访问 Docker Hub 时,推荐您使用下方 Dockerfile 自行构建镜像。

dockerfile
FROM cr.infini-ai.com/infini-ai/ubuntu:22.04-20240429

ENV PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple

WORKDIR /app

RUN --mount=type=cache,target=/root/.cache/pip \
    pip3 install "vllm==0.16.0"

本文包含的 Dockerfile 可用于在镜像中心基于 Dockerfile 构建镜像,或直接在开发机中构建镜像(使用 docker build/docker buildx build)。

Dockerfile 说明

从宏观上看,我们在为运行 vLLM 应用程序构建 Docker 镜像时,主要优化了以下内容:

  • 精简基础依赖:使用已经配置好 Python 的 Ubuntu 基础镜像,减少系统层安装步骤。
  • 构建环境隔离:通过设置工作目录(WORKDIR)建立独立的目录结构。
  • 持久化构建缓存:利用 BuildKit 挂载机制复用 pip 缓存,提升重复构建速度。

配置运行时环境

dockerfile
FROM cr.infini-ai.com/infini-ai/ubuntu:22.04-20240429

运行时基于 Ubuntu 基础镜像。由于该镜像默认已经自带了 Python 环境,同时也无需再去规避 PEP 668 规范,所以我们可以精简很多相关虚拟环境配置。

注意:为了遵循 PEP 394 以及现代 Linux 发行版(如 Ubuntu 20.04 以上)的社区最佳实践,基础容器内默认只提供明确的版本化命令 python3pip3(未创建全局 pythonpip 软链接),请在执行环境和调用脚本时统一使用 python3pip3 作为调用命令。

关键环境变量

dockerfile
ENV PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple
  • PIP_INDEX_URL:配置国内 PyPI 镜像源(如清华源),有效提升依赖包的下载速度,大幅缩短构建时间。

设置工作目录

dockerfile
WORKDIR /app

WORKDIR 设定了容器内的主要活动路径。后续的所有命令(如 RUNCMDENTRYPOINTCOPY)默认都会在该目录下相对执行,这有助于代码结构隔离,并维持系统文件目录整洁。

依赖安装

dockerfile
RUN --mount=type=cache,target=/root/.cache/pip \
    pip3 install "vllm==0.16.0"

利用 BuildKit 的长期缓存机制(--mount=type=cache)挂载 pip 缓存目录,能显著加快镜像重复构建的速度。在基础镜像内置支持并无需规避系统限制的基础上,本步骤直接利用 pip3 安装 vLLM。

缓存挂载参数说明:

  • type=cache:指定这是一个跨构建持久化的缓存挂载。
  • target=/root/.cache/pippip 缓存目录的挂载点,用于存储已下载的包和编译后的 wheel 文件以避免不必要的重复劳动。

项目安装

如果在 vLLM 基础上需要封装您自己的扩展逻辑参数或上层 API 服务,可以在所有系统和框架依赖准备妥当后,将应用代码合并至镜像内:

dockerfile
# COPY ./src /app/src
# WORKDIR /app
# RUN pip3 install -r requirements.txt