24 lines
820 B
Plaintext
24 lines
820 B
Plaintext
|
# Using the `rust-musl-builder` as base image, instead of
|
||
|
# the official Rust toolchain
|
||
|
FROM docker.io/clux/muslrust:stable AS chef
|
||
|
USER root
|
||
|
RUN cargo install cargo-chef
|
||
|
WORKDIR /app
|
||
|
|
||
|
FROM chef AS planner
|
||
|
COPY . .
|
||
|
RUN cargo chef prepare --recipe-path recipe.json
|
||
|
|
||
|
FROM chef AS builder
|
||
|
COPY --from=planner /app/recipe.json recipe.json
|
||
|
# Notice that we are specifying the --target flag!
|
||
|
RUN cargo chef cook --release --target x86_64-unknown-linux-musl --recipe-path recipe.json
|
||
|
COPY . .
|
||
|
RUN cargo build --release --target x86_64-unknown-linux-musl --bin maps-validation
|
||
|
|
||
|
FROM docker.io/alpine:latest AS runtime
|
||
|
RUN addgroup -S myuser && adduser -S myuser -G myuser
|
||
|
COPY --from=builder /app/target/x86_64-unknown-linux-musl/release/maps-validation /usr/local/bin/
|
||
|
USER myuser
|
||
|
ENTRYPOINT ["/usr/local/bin/maps-validation"]
|