[rust-renderer] Standalone preprocessing (#36718)

Signed-off-by: Sage Ahrac <sagiahrak@gmail.com>
Co-authored-by: Shangming Cai <csmthu@gmail.com>
Co-authored-by: Liangsheng Yin <hnyls2002@gmail.com>
Co-authored-by: Rain Jiang <96632942+rainj-me@users.noreply.github.com>
This commit is contained in:
Sage
2026-09-20 22:03:12 +08:00
committed by GitHub
co-authored by Shangming Cai Liangsheng Yin Rain Jiang
parent 6880a47955
commit 7b1c2ed0a4
51 changed files with 17729 additions and 0 deletions
+89
View File
@@ -0,0 +1,89 @@
# syntax=docker/dockerfile:1
# Keep the compiler aligned with rust/rust-toolchain.toml. Pin image indexes
# rather than individual architecture manifests so both platforms use this file.
FROM rust:1.92.0-slim-bookworm@sha256:f1f73538ebe623fd3673a35aff3df358ae1084c64c55646516e5b17b321b6c9b AS build
ARG TARGETARCH
ARG CARGO_BUILD_JOBS=4
ENV RUSTUP_TOOLCHAIN=1.92.0 \
CARGO_BUILD_JOBS=${CARGO_BUILD_JOBS} \
PCRE2_SYS_STATIC=1
RUN apt-get update \
&& apt-get install -y --no-install-recommends build-essential pkg-config \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /build
COPY rust/Cargo.toml rust/Cargo.lock rust/rust-toolchain.toml rust/
# Cargo loads every workspace member even when building only the renderer.
COPY rust/sglang-grpc/Cargo.toml rust/sglang-grpc/
COPY rust/sglang-grpc/src/ rust/sglang-grpc/src/
COPY rust/sglang-mm/Cargo.toml rust/sglang-mm/
COPY rust/sglang-mm/src/ rust/sglang-mm/src/
COPY rust/sglang-server/Cargo.toml rust/sglang-server/
COPY rust/sglang-server/src/ rust/sglang-server/src/
COPY rust/sglang-renderer/Cargo.toml rust/sglang-renderer/
COPY rust/sglang-renderer/src/ rust/sglang-renderer/src/
# Avoid rustup downloading development components from rust-toolchain.toml,
# but fail if the image's compiler and the workspace toolchain drift apart.
RUN channel=$(sed -n 's/^channel = "\([^"]*\)"/\1/p' rust/rust-toolchain.toml) \
&& case "${RUSTUP_TOOLCHAIN}" in "$channel"|"$channel".*) ;; *) exit 1 ;; esac
RUN --mount=type=cache,id=renderer-registry-${TARGETARCH},target=/usr/local/cargo/registry,sharing=locked \
--mount=type=cache,id=renderer-git-${TARGETARCH},target=/usr/local/cargo/git,sharing=locked \
--mount=type=cache,id=renderer-target-${TARGETARCH},target=/build/rust/target,sharing=locked \
cargo build --manifest-path rust/Cargo.toml -p sglang-renderer \
--bin sglang-renderer --release --features http --locked \
&& install -D rust/target/release/sglang-renderer /out/sglang-renderer
# Run the existing unit suite in the same Linux toolchain used for the image.
# This sibling stage is selected by CI and is not a dependency of the runtime.
FROM build AS test
COPY rust/sglang-renderer/tests/ rust/sglang-renderer/tests/
COPY experimental/sgl-router/tests/fixtures/tiny_tokenizer.json experimental/sgl-router/tests/fixtures/tiny_tokenizer.json
RUN --mount=type=cache,id=renderer-registry-${TARGETARCH},target=/usr/local/cargo/registry,sharing=locked \
--mount=type=cache,id=renderer-git-${TARGETARCH},target=/usr/local/cargo/git,sharing=locked \
--mount=type=cache,id=renderer-target-${TARGETARCH},target=/build/rust/target,sharing=locked \
cargo test --manifest-path rust/Cargo.toml -p sglang-renderer --features http --locked
FROM debian:bookworm-slim@sha256:88200866dfff7ea7f5cbcb6ec7c8a701889efe6fe859fe64d6990e4b07ea4171 AS runtime
RUN apt-get update \
&& apt-get install -y --no-install-recommends ca-certificates libgcc-s1 \
&& rm -rf /var/lib/apt/lists/* \
&& groupadd --gid 65532 sglang \
&& useradd --uid 65532 --gid 65532 --no-log-init --create-home \
--home-dir /home/sglang --shell /usr/sbin/nologin sglang \
&& mkdir -p /home/sglang/.cache/huggingface \
&& chown -R 65532:65532 /home/sglang
COPY --from=build /out/sglang-renderer /usr/local/bin/sglang-renderer
COPY LICENSE /usr/share/licenses/sglang-renderer/LICENSE
# Metadata changes must not invalidate compilation.
ARG SGLANG_BUILD_COMMIT=unknown
ARG SGLANG_BUILD_URL=
ARG SGLANG_IMAGE_TAG=local/sglang-renderer:dev
ENV HOME=/home/sglang \
HF_HOME=/home/sglang/.cache/huggingface \
SGLANG_BUILD_COMMIT=${SGLANG_BUILD_COMMIT} \
SGLANG_BUILD_URL=${SGLANG_BUILD_URL} \
SGLANG_IMAGE_TAG=${SGLANG_IMAGE_TAG}
LABEL org.opencontainers.image.source="https://github.com/sgl-project/sglang" \
org.opencontainers.image.licenses="Apache-2.0" \
org.opencontainers.image.revision="${SGLANG_BUILD_COMMIT}" \
org.opencontainers.image.version="${SGLANG_IMAGE_TAG}" \
org.opencontainers.image.url="${SGLANG_BUILD_URL}" \
ai.sglang.build.commit="${SGLANG_BUILD_COMMIT}" \
ai.sglang.build.url="${SGLANG_BUILD_URL}" \
ai.sglang.image.tag="${SGLANG_IMAGE_TAG}"
USER 65532:65532
WORKDIR /home/sglang
EXPOSE 30000
# The renderer's existing graceful shutdown handler listens for Ctrl-C.
STOPSIGNAL SIGINT
ENTRYPOINT ["/usr/local/bin/sglang-renderer"]
CMD ["--help"]