2024-12-11 01:03:18 +00:00
|
|
|
# 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
|
2024-12-12 20:51:44 +00:00
|
|
|
COPY api ./api
|
2024-12-11 01:03:18 +00:00
|
|
|
# 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"]
|