# NMSR-as-a-Service (https://github.com/NickAcPT/nmsr-rs) — built from source. # Upstream ships no published image, so we vendor a pinned build. Adapted from # the upstream Dockerfile but: pinned to a commit (reproducible), and the config # is bind-mounted at runtime (not COPYed) so it can change without a rebuild. # # Pin — bump deliberately: ARG NMSR_REF=948ba4bc027b FROM rust:slim-bookworm AS builder ARG NMSR_REF WORKDIR /tmp RUN apt-get update -y \ && apt-get --no-install-recommends install -y git libssl-dev pkg-config ca-certificates RUN git clone https://github.com/NickAcPT/nmsr-rs/ WORKDIR /tmp/nmsr-rs RUN git checkout "${NMSR_REF}" # target-cpu=native: this image is built on the host that runs it (self-host). RUN RUSTFLAGS="-Ctarget-cpu=native" \ cargo build --release --bin nmsr-aas --features ears --package nmsr-aas FROM rust:slim-bookworm # mesa-vulkan-drivers provides lavapipe (software Vulkan) for headless rendering. RUN apt-get update -y \ && apt-get --no-install-recommends install -y mesa-vulkan-drivers ca-certificates WORKDIR /nmsr COPY --from=builder /tmp/nmsr-rs/target/release/nmsr-aas /nmsr/nmsr-aas ENV NMSR_USE_SMAA=1 \ NMSR_SAMPLE_COUNT=1 \ WGPU_BACKEND=vulkan \ RUST_BACKTRACE=1 EXPOSE 8080 # config.toml is bind-mounted by docker-compose.nmsr.yml. CMD ["/nmsr/nmsr-aas", "-c", "/nmsr/config.toml"]