FROM mverleg/rust_nightly_musl_base:nodeps_2022-01-13 AS build ARG BIN=next_semver # Copy the code (all except .dockerignore). COPY ./ ./ # Check RUN cargo test --all-features RUN cargo --offline clippy --all-features --tests -- -D warnings RUN cargo --offline fmt --all -- --check # Build (for release) RUN find . -name target -prune -o -type f &&\ touch -c build.rs src/main.rs src/lib.rs &&\ cargo --offline build --bin "$BIN" --all-features --release --locked # Copy executable RUN find . -wholename "*/target/*" -name "$BIN" -type f -executable -print -exec cp {} /"$BIN" \; &&\ test -f /"$BIN" # Second stage image to decrease size FROM scratch AS executable ARG BIN=next_semver ENV PATH=/ ENV RUST_BACKTRACE=1 ENV RUST_LOG='warn' ENV ROCKET_ADDRESS="0.0.0.0" ENV ROCKET_PORT=8080 WORKDIR /code COPY --from=build /"$BIN" /"$BIN" ENTRYPOINT ["next_semver"]