# syntax=docker/dockerfile:1.6 # Build sgl-router binary for k8s integration E2E. # Context root: repo root (one level above experimental/sgl-router/). # Matches rust-toolchain.toml's pinned channel, avoiding an in-build rustup channel-sync. FROM rust:1.92-bookworm AS builder # Pin to the exact toolchain pre-installed in the base image so rustup # doesn't try to sync the channel manifest when it sees rust-toolchain.toml's # `channel = "1.92"`. ENV RUSTUP_TOOLCHAIN=1.92.0 # libssl-dev + pkg-config ship with rust:1.92-bookworm already; protoc does not, # and the Indexer's build script needs it to compile the KV-indexer protos. RUN apt-get update \ && apt-get install -y --no-install-recommends protobuf-compiler \ && rm -rf /var/lib/apt/lists/* WORKDIR /build # Copy just the sgl-router crate (context is the repo root) COPY experimental/sgl-router /build/experimental/sgl-router RUN --mount=type=cache,target=/usr/local/cargo/registry \ --mount=type=cache,target=/usr/local/cargo/git \ --mount=type=cache,target=/build/experimental/sgl-router/target \ cd /build/experimental/sgl-router \ && cargo build --locked --release --bin sgl-router \ && cp target/release/sgl-router /usr/local/bin/sgl-router FROM debian:bookworm-slim RUN apt-get update && apt-get install -y ca-certificates \ && rm -rf /var/lib/apt/lists/* COPY --from=builder /usr/local/bin/sgl-router /usr/local/bin/sgl-router # Tiny tokenizer fixture used by the E2E config COPY experimental/sgl-router/tests/fixtures/tiny_tokenizer.json /etc/tokenizer/tiny.json EXPOSE 8090 ENTRYPOINT ["sgl-router"]