Prhub

#23014 [release] install rust toolchain in main dockerfile

原始 PR 作者 alexnails 合并时间 2026-04-21 00:50 文件变更 1 提交数 1 评论 2 代码增减 +7 / -0

执行摘要

在主 Dockerfile 中安装 Rust 工具链,解决 gRPC 扩展编译依赖问题。

PR #22736引入的原生gRPC Rust扩展(rust/sglang-grpc/)通过setuptools-rust打包到主sglang wheel中。任何源码安装(可编辑或不可编辑)都会在构建时调用cargo,因此容器中必须在PATH上有rustc/cargo。当前它们不存在,导致当存在Rust扩展时,pip install失败并显示“error: can't find Rust compiler”。

该PR是必要的基础设施修复,值得快速合并。对于关注Docker镜像构建或CI/CD流程的工程师,可精读以了解Rust工具链集成模式;对于其他开发者,仅需知晓构建依赖已解决。

讨论亮点

Review中仅有一名审核者(ispobock)批准,无具体评论。PR body中详细说明了变更原因和测试计划,但未引发技术讨论。

实现拆解

  1. 入口变更:修改docker/Dockerfile,在framework阶段(第472行后)添加Rust工具链安装步骤。
  2. 核心逻辑:通过curl下载rustup安装脚本,使用--no-modify-path参数避免自动修改PATH,然后通过ENV显式设置PATH为/root/.cargo/bin:${PATH},确保rustc/cargo可访问。安装后执行rustc --version && cargo --version验证安装成功。
  3. 配置配套:保持其他Dockerfile不变(如docker/rocm.Dockerfiledocker/gateway.Dockerfile已安装Rust,docker/sagemaker.Dockerfile继承主镜像),避免重复安装或破坏现有配置。
  4. 测试验证:PR body中提到测试计划包括重建每个受影响镜像并确认rustc/cargo版本检查成功,以及验证包含setuptools-rust的sglang树在镜像内pip安装成功。
文件 模块 状态 重要度
docker/Dockerfile Docker 构建 modified 3.93

关键源码片段

docker/Dockerfile infrastructure

主 Dockerfile,添加 Rust 工具链安装以支持 setuptools-rust 扩展编译。

# 安装 Rust 工具链(用于 setuptools-rust 构建的扩展,例如 sglang-grpc)。
# 最小支持版本:1.85(首个支持 edition 2024 的稳定版)。
ENV PATH="/root/.cargo/bin:${PATH}"
RUN curl --proto '=https' --tlsv1.2 --retry 3 --retry-delay 2 -sSf https://sh.rustup.rs \
    | sh -s -- -y --no-modify-path \
    && rustc --version && cargo --version

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

低风险

  1. 回归风险:仅添加安装步骤,不修改现有逻辑,但需确保PATH设置正确,避免与其他工具链冲突。
  2. 兼容性风险:指定最小支持版本为1.85(首个支持edition 2024的稳定版),使用默认stable channel,版本兼容性高。
  3. 构建性能风险:增加Docker镜像构建时间和大小,但rustup安装相对轻量,影响可控。
  4. 安全风险:通过HTTPS下载rustup脚本,使用--proto '=https' --tlsv1.2确保传输安全。

影响范围

  1. 用户影响:对最终用户透明,但使用Docker镜像进行源码安装的开发者将不再遇到“找不到Rust编译器”错误。
  2. 系统影响:确保所有基于主Dockerfile的构建(包括CI)能成功编译包含Rust扩展的sglang包。
  3. 团队影响:简化CI/CD流程,修复因PR #22736引入的构建中断问题,提升开发效率。
    影响程度:中等,关键修复构建基础设施,但未改变核心功能。
构建依赖缺失 镜像大小增加

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论