FROM rust:1.76-buster AS BUILD ENV APP_NAME=mirror-server ENV APP_HOME=/srv/${APP_NAME} RUN apt update \ && apt install -y curl \ && cargo install cargo-deb # Setup working env. RUN mkdir -p ${APP_HOME} WORKDIR ${APP_HOME} # Create build target cache. RUN USER=root cargo init --bin . COPY ["Cargo.toml", "./"] RUN cargo build \ && cargo build --tests \ && cargo build --release \ && rm src/*.rs # Bring in the source COPY ["./src/*", "./src/"] COPY ["README.md", "LICENSE", "."] # Build the example API. RUN cargo build --release # Create the minimal server image. FROM debian:buster-slim AS SERVER ENV APP_NAME=mirror-server ENV APP_HOME=/srv/${APP_NAME} RUN apt update COPY --from=BUILD ${APP_HOME}/target/release/${APP_NAME} /usr/local/bin/ CMD ${APP_NAME}