FROM rust:1.56.1 as builder
WORKDIR /usr/src/

# use musl C standard library implementation which allows full static linking
RUN rustup target add x86_64-unknown-linux-musl

# Pre-download binaries by building a project consisting only of Cargo.toml and Cargo.lock
RUN USER=root cargo new mc-server-pinger
WORKDIR /usr/src/mc-server-pinger
COPY Cargo.toml Cargo.lock ./
RUN cargo build --release

# Fully build the app installing it to cargo from which it will later be taken
COPY src ./src
RUN cargo install --target x86_64-unknown-linux-musl --path .

FROM scratch
COPY --from=builder /usr/local/cargo/bin/mc-server-pinger .
ENTRYPOINT ["/mc-server-pinger"]
