62 lines
3.1 KiB
Docker
62 lines
3.1 KiB
Docker
# 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"]
|