Base image already has torch 2.13, but pyproject build-system.requires pulls it into pip's isolated build env on every build (~6GB via throttled mirror, 47min). --no-build-isolation reuses the base env; build.sh picks Dockerfile.fast (--no-deps) when python/pyproject.toml is unchanged.
22 lines
1.1 KiB
Docker
22 lines
1.1 KiB
Docker
# 优化版(2026-09-24):解决清华源限流下每次构建重下 torch 的问题。
|
||
# 要点:
|
||
# 1. pyproject build-system.requires 含 torch==2.13.0,pip 隔离构建环境每次都重下 ~6GB。
|
||
# 基底镜像已装 torch 2.13 → 用 --no-build-isolation 复用,构建环境零下载。
|
||
# 2. 基底缺 setuptools-scm(版本打戳要用),单层预装 + pip cache mount,只下载一次。
|
||
# 3. RUN 的 pip cache mount 持久化在宿主机,依赖解析命中的包不再重复下载。
|
||
FROM uhub.service.ucloud.cn/umirror/sglang:dev-dsv41
|
||
|
||
ARG PIP_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple
|
||
ENV PIP_INDEX_URL=${PIP_INDEX}
|
||
|
||
# 构建后端(pyproject build-system.requires,torch 除外——基底已有)
|
||
RUN --mount=type=cache,target=/root/.cache/pip \
|
||
pip install "setuptools>=61" "setuptools-scm>=8" "setuptools-rust>=1.11" wheel
|
||
|
||
# 整个源码树(含 .git,用于 setuptools-scm 版本打戳)
|
||
COPY sglang/ /sgl-workspace/sglang/
|
||
|
||
# editable 安装,全量依赖解析(pyproject.toml 变化时走这个)
|
||
RUN --mount=type=cache,target=/root/.cache/pip \
|
||
pip install --no-build-isolation -e /sgl-workspace/sglang/python
|