# syntax=docker/dockerfile:1.7 # walknot: knot-server (and the knot2 migration tool) on distroless. # docker build -t walknot . # release (fat LTO) # docker build --build-arg PROFILE=container -t walknot . # faster, for test clusters FROM docker.io/library/rust:1.96-slim-trixie AS builder RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates build-essential cmake perl pkg-config clang mold git \ && rm -rf /var/lib/apt/lists/* ENV RUSTFLAGS="-C linker=clang -C link-arg=-fuse-ld=mold" \ CARGO_INCREMENTAL=0 \ CARGO_NET_GIT_FETCH_WITH_CLI=true ARG PROFILE=release WORKDIR /src COPY Cargo.toml Cargo.lock rust-toolchain.toml example.toml ./ COPY crates ./crates COPY third_party ./third_party COPY lexicons ./lexicons RUN --mount=type=cache,target=/usr/local/cargo/registry \ --mount=type=cache,target=/usr/local/cargo/git \ --mount=type=cache,target=/src/target \ cargo build --locked --profile "$PROFILE" --package knot-server --package knot-migrate \ && dir="$([ "$PROFILE" = dev ] && echo debug || echo "$PROFILE")" \ && mkdir -p /out \ && cp "target/$dir/knot-server" "target/$dir/knot-migrate" /out/ \ && strip /out/knot-server /out/knot-migrate FROM gcr.io/distroless/cc-debian13:latest@sha256:d74d144baa124dd9defd01d71872bb56c49d4441dba6153ccf790364f97e64b1 COPY --from=builder /out/knot-server /usr/local/bin/knot-server COPY --from=builder /out/knot-migrate /usr/local/bin/knot-migrate EXPOSE 5555 2222 USER 65532:65532 ENTRYPOINT ["/usr/local/bin/knot-server"] CMD ["--config", "/etc/knot/config.toml"]