2024-08-21 20:24:56 +02:00
|
|
|
FROM docker.io/lukemathwalker/cargo-chef:latest-rust-1.80.1-bookworm AS chef
|
2024-06-10 15:00:00 +02:00
|
|
|
ARG BIN
|
|
|
|
WORKDIR /app
|
|
|
|
|
|
|
|
FROM chef AS planner
|
|
|
|
ARG BIN
|
|
|
|
|
|
|
|
COPY . .
|
|
|
|
RUN cargo chef prepare --recipe-path recipe.json --bin $BIN
|
|
|
|
|
|
|
|
FROM chef AS builder
|
|
|
|
ARG BIN
|
|
|
|
|
|
|
|
# Ensure working C compile setup (not installed by default in arm64 images)
|
|
|
|
RUN apt update && apt install build-essential cmake -y
|
|
|
|
|
|
|
|
COPY --from=planner /app/recipe.json recipe.json
|
|
|
|
RUN cargo chef cook --release --recipe-path recipe.json
|
|
|
|
|
|
|
|
COPY . .
|
|
|
|
RUN cargo build --release --bin $BIN
|
|
|
|
|
|
|
|
FROM debian:bookworm-slim AS runtime
|
|
|
|
|
|
|
|
RUN apt-get update && \
|
|
|
|
apt-get install -y --no-install-recommends \
|
|
|
|
"ca-certificates" \
|
|
|
|
&& \
|
|
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
|
|
ARG BIN
|
|
|
|
ENV BIN=$BIN
|
|
|
|
WORKDIR /app
|
|
|
|
|
|
|
|
USER nobody
|
|
|
|
|
|
|
|
COPY --from=builder /app/target/release/$BIN /usr/local/bin
|
|
|
|
ENTRYPOINT ["/bin/sh", "-c", "/usr/local/bin/$BIN"]
|