# syntax=docker/dockerfile:1.7 # dockerfiles/Dockerfile.hermes-switchyard FROM --platform=$BUILDPLATFORM rust:1.96.1-slim-bookworm@sha256:e18a79fc84dfcfc3ab5ba72290398a644c135c97eaa881447fddc354ee4701a3 AS build ARG SWITCHYARD_LIBSY_SHA256=85f12e1ffefa168604044ccf78535a34dcde38eb59653ac27465e44113cd848c ARG SWITCHYARD_SERVER_SHA256=95946e3df637143dcdd2a34c153bcaa57b7d4bc3dee53ed6c5497ddd996e16bc ARG TARGETARCH RUN apt-get update \ && apt-get install -y --no-install-recommends \ build-essential \ ca-certificates \ cmake \ curl \ gcc-aarch64-linux-gnu \ libc6-dev-arm64-cross \ linux-libc-dev-arm64-cross \ patch \ pkg-config \ && rm -rf /var/lib/apt/lists/* COPY dockerfiles/switchyard-capability-fallback.patch /tmp/switchyard-capability-fallback.patch RUN rustup target add aarch64-unknown-linux-gnu ENV CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc \ CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc RUN --mount=type=cache,id=switchyard-cargo-registry,target=/usr/local/cargo/registry,sharing=locked \ --mount=type=cache,id=switchyard-cargo-target-aarch64,target=/opt/switchyard-target,sharing=locked \ set -eux; \ test "$TARGETARCH" = arm64; \ mkdir -p /opt/switchyard-source; \ curl --fail --location --retry 3 --output /tmp/libsy.crate \ https://static.crates.io/crates/switchyard-libsy/switchyard-libsy-0.2.0.crate; \ echo "${SWITCHYARD_LIBSY_SHA256} /tmp/libsy.crate" | sha256sum --check --status -; \ tar --extract --gzip --file /tmp/libsy.crate --directory /opt/switchyard-source; \ patch --strip=1 --directory /opt/switchyard-source/switchyard-libsy-0.2.0 \ --input /tmp/switchyard-capability-fallback.patch; \ curl --fail --location --retry 3 --output /tmp/server.crate \ https://static.crates.io/crates/switchyard-server/switchyard-server-0.2.0.crate; \ echo "${SWITCHYARD_SERVER_SHA256} /tmp/server.crate" | sha256sum --check --status -; \ tar --extract --gzip --file /tmp/server.crate --directory /opt/switchyard-source; \ CARGO_TARGET_DIR=/opt/switchyard-target cargo test --locked \ --manifest-path /opt/switchyard-source/switchyard-libsy-0.2.0/Cargo.toml \ automatic_fallback --lib; \ printf '\n[patch.crates-io]\nswitchyard-libsy = { path = "/opt/switchyard-source/switchyard-libsy-0.2.0" }\n' \ >> /opt/switchyard-source/switchyard-server-0.2.0/Cargo.toml; \ CARGO_TARGET_DIR=/opt/switchyard-target cargo install --locked --target aarch64-unknown-linux-gnu \ --path /opt/switchyard-source/switchyard-server-0.2.0 \ --root /opt/switchyard; \ rm -rf /opt/switchyard-source /tmp/libsy.crate /tmp/server.crate /tmp/switchyard-capability-fallback.patch FROM --platform=$TARGETPLATFORM debian:bookworm-slim@sha256:abd67ffcfa541b485a3dff59865ab629aa048a6c613e639d36e7456b0b229241 COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt COPY --from=build /opt/switchyard/bin/switchyard-server /usr/local/bin/switchyard-server USER 10000:10000 EXPOSE 9005 ENTRYPOINT ["/usr/local/bin/switchyard-server"]