vLLM 应用镜像构建在 flagos-runtime 之上,打包一个可运行的 vLLM 服务 与 vllm-plugin-FL 插件。

已发布的镜像按后端拆分——镜像引用与启动方式见 应用镜像 目录或各个后端的独立页面。

构建参数

参数默认值说明
RUNTIME_IMAGE(必填)运行时镜像引用,如 harbor.baai.ac.cn/flagos-runtime/flagos-runtime-nvidia-cuda12.8:2.1.2
VLLM_VERSION0.24.0要安装的 vLLM 版本。该版本对应的"手术 wheel"(+flagos,见下文)必须已上传到 FLAGOS_PYPI。
FLAGOS_PYPI""厂商 PyPI 索引 — 存放手术后的 vllm wheel,优先搜索。
EXTRA_PYPIhttps://mirrors.aliyun.com/pypi/simple阿里云镜像 — 其他所有依赖的回退源。
PLUGIN_FL_VERSION""vllm-plugin-FL 的 wheel 版本(commit 级精确),如 0.2.0+gcf8998c.d20260815。从厂商 PyPI 安装;空值 = 不安装插件。非空时,镜像 tag 追加 -{version}(+ → _)。
APP_DEPS""厂商条件包(configs.yaml deps_app.vllm),空格分隔,从厂商 PyPI 安装。

手术后的 vLLM wheel

官方 vLLM wheel 在 METADATA 中声明了对 torch、triton 以及 NVIDIA 独占包的 Requires-Dist — 直接安装会覆盖 runtime 镜像中精心编排的软件栈。我们先用 packaging/script/repack.py 将这些条目从 wheel 的 METADATA 中摘除,再将手术后的 wheel 以 vllm-{version}+flagos 名称上传到厂商的 FLAGOS_PYPI。

pip install 时优先搜索厂商 PyPI — 找到手术后的 wheel 并使用。其余(安全)依赖 全部从 EXTRA_PYPI 解析。torch 和 triton 已存在于 runtime venv 中且满足所有 传递约束,pip 不会去动它们。+flagos 标记在构建中显式锁定 (vllm==${VLLM_VERSION}+flagos)——裸 vllm=={version} 会解析到官方 wheel, 其 torch Requires-Dist 会覆盖已固定的 vendor torch。

手术工具见 packaging/script/repack.py,分类规则见 packaging/vllm/config.yaml。

vllm-plugin-FL

插件以预构建 wheel(vllm-plugin-fl==<version>)从厂商 PyPI 安装——不在应用 镜像内做源码编译。wheel 由 vllm-plugin-wheel 工作流构建并做过依赖审计。 PLUGIN_FL_VERSION 构建参数锁定确切版本;非空时,发布镜像的 tag 会追加 -{version} 段(+ → _),如 vllm0.24.0-generic-12.8:2.1.2-0.2.0_gcf8998c.d20260815。

构建示例

  docker build \
  --build-arg RUNTIME_IMAGE=harbor.baai.ac.cn/flagos-runtime/flagos-runtime-nvidia-cuda12.8:2.1.2 \
  --build-arg FLAGOS_PYPI=https://resource.flagos.net/repository/flagos-pypi-nvidia/simple \
  --build-arg PLUGIN_FL_VERSION=0.2.0+gcf8998c.d20260815 \
  -t harbor.baai.ac.cn/flagos-app/vllm0.24.0-generic-12.8:2.1.2-0.2.0_gcf8998c.d20260815 \
  -f app/vllm/Containerfile .
  

Last updated 24 Sep 2026, 12:50 +0800. history