wastebin is a pastebin ๐ bin.bloerg.net
pastebin
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172# Cross-compile Dockerfile supporting both x86_64-unknown-linux-musl and# aarch64-unknown-linux-musl targets using zig to link against musl libc. Note# that this is to be used from an x86_64 host.
# --- build image
FROM rust:1.90 AS builder
RUN rustup target add \ aarch64-unknown-linux-musl \ x86_64-unknown-linux-musl
RUN update-ca-certificates
ENV ZIGVERSION=0.15.2
RUN ARCH=$(uname -m) && \ if [ "$ARCH" = "aarch64" ]; then ZIGARCH="aarch64"; else ZIGARCH="x86_64"; fi && \ wget https://ziglang.org/download/$ZIGVERSION/zig-$ZIGARCH-linux-$ZIGVERSION.tar.xz && \ tar -C /usr/local --strip-components=1 -xf zig-$ZIGARCH-linux-$ZIGVERSION.tar.xz && \ mv /usr/local/zig /usr/local/bin && \ rm zig-$ZIGARCH-linux-$ZIGVERSION.tar.xz
RUN cargo install --locked cargo-zigbuild
WORKDIR /app
COPY . .
RUN cargo zigbuild \ --release \ --target aarch64-unknown-linux-musl \ --target x86_64-unknown-linux-musl \ --bin wastebin \ --bin wastebin-ctl
RUN adduser \ --disabled-password \ --gecos "" \ --home "/nonexistent" \ --shell "/sbin/nologin" \ --no-create-home \ --uid "10001" \ "app"
# --- x86_64-unknown-linux-musl final image
FROM scratch AS amd64
COPY --from=builder /etc/passwd /etc/passwdCOPY --from=builder /etc/group /etc/group
WORKDIR /appCOPY --from=builder /app/target/x86_64-unknown-linux-musl/release/wastebin ./COPY --from=builder /app/target/x86_64-unknown-linux-musl/release/wastebin-ctl ./USER app:appCMD ["/app/wastebin"]
# --- aarch64-unknown-linux-musl final image
FROM scratch AS arm64
COPY --from=builder /etc/passwd /etc/passwdCOPY --from=builder /etc/group /etc/group
WORKDIR /appCOPY --from=builder /app/target/aarch64-unknown-linux-musl/release/wastebin ./COPY --from=builder /app/target/aarch64-unknown-linux-musl/release/wastebin-ctl ./USER app:appCMD ["/app/wastebin"]