11# This will be the main build image
2- FROM --platform=${BUILDPLATFORM} lukemathwalker/cargo-chef:latest- rust- 1.83 AS chef
2+ FROM --platform=${BUILDPLATFORM} rust: 1.83-slim-bookworm AS chef
33ARG TARGETOS TARGETARCH BUILDPLATFORM TARGET_CRATE
4+ ENV CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse
45WORKDIR /app
6+ RUN cargo install cargo-chef --locked && \
7+ rm -rf $CARGO_HOME/registry/
58
69FROM --platform=${BUILDPLATFORM} chef AS planner
710ARG TARGETOS TARGETARCH BUILDPLATFORM TARGET_CRATE
@@ -20,8 +23,8 @@ RUN if [ "$BUILDPLATFORM" = "linux/amd64" -a "$TARGETARCH" = "arm64" ]; then \
2023 rustup target add aarch64-unknown-linux-gnu && \
2124 dpkg --add-architecture arm64 && \
2225 apt update && \
23- apt install -y gcc-aarch64-linux-gnu libssl-dev:arm64 zlib1g-dev:arm64 && \
24- echo " #!/bin/sh" > ${BUILD_VAR_SCRIPT} && \
26+ apt install -y gcc-aarch64-linux-gnu && \
27+ echo ' #!/bin/sh' > ${BUILD_VAR_SCRIPT} && \
2528 echo "export TARGET=aarch64-unknown-linux-gnu" >> ${BUILD_VAR_SCRIPT} && \
2629 echo "export TARGET_FLAG=--target=aarch64-unknown-linux-gnu" >> ${BUILD_VAR_SCRIPT} && \
2730 echo "export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=/usr/bin/aarch64-linux-gnu-gcc" >> ${BUILD_VAR_SCRIPT} && \
@@ -35,8 +38,8 @@ RUN if [ "$BUILDPLATFORM" = "linux/amd64" -a "$TARGETARCH" = "arm64" ]; then \
3538 rustup target add x86_64-unknown-linux-gnu && \
3639 dpkg --add-architecture amd64 && \
3740 apt update && \
38- apt install -y gcc-x86-64-linux-gnu libssl-dev:amd64 zlib1g-dev:amd64 && \
39- echo " #!/bin/sh" > ${BUILD_VAR_SCRIPT} && \
41+ apt install -y gcc-x86-64-linux-gnu && \
42+ echo ' #!/bin/sh' > ${BUILD_VAR_SCRIPT} && \
4043 echo "export TARGET=x86_64-unknown-linux-gnu" >> ${BUILD_VAR_SCRIPT} && \
4144 echo "export TARGET_FLAG=--target=x86_64-unknown-linux-gnu" >> ${BUILD_VAR_SCRIPT} && \
4245 echo "export CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER=/usr/bin/x86_64-linux-gnu-gcc" >> ${BUILD_VAR_SCRIPT} && \
@@ -49,12 +52,14 @@ RUN if [ "$BUILDPLATFORM" = "linux/amd64" -a "$TARGETARCH" = "arm64" ]; then \
4952
5053# Run cook to prep the build
5154RUN if [ -f ${BUILD_VAR_SCRIPT} ]; then \
55+ chmod +x ${BUILD_VAR_SCRIPT} && \
5256 . ${BUILD_VAR_SCRIPT} && \
5357 echo "Cross-compilation environment set up for ${TARGET}" ; \
5458 else \
5559 echo "No cross-compilation needed" ; \
5660 fi && \
57- export GIT_HASH=$(git rev-parse HEAD) && \
61+ apt update && \
62+ apt install -y git libssl-dev:${TARGETARCH} zlib1g-dev:${TARGETARCH} pkg-config && \
5863 cargo chef cook ${TARGET_FLAG} --release --recipe-path recipe.json
5964
6065# Get the latest Protoc since the one in the Debian repo is incredibly old
0 commit comments