FROM archlinux:base-devel AS build ARG BT_APP ARG BT_DEPENDS RUN pacman -Syu --noconfirm RUN pacman -S --noconfirm rustup clang $BT_DEPENDS RUN rustup toolchain install nightly RUN rustup default nightly RUN mkdir -p src/crates COPY ./crates /src/crates COPY Cargo.toml /src/ COPY Cargo.lock /src/ WORKDIR /src RUN cargo fetch --target x86_64-unknown-linux-gnu WORKDIR /src/crates/$BT_APP RUN cargo build --release FROM archlinux:base AS release ARG BT_APP ARG BT_DEPENDS ENV BT_APP=$BT_APP RUN pacman -Syu --noconfirm\ && pacman -S --noconfirm $BT_DEPENDS\ && pacman -Scc --noconfirm\ && useradd $BT_APP \ && mkdir -p /app/state\ && chown $BT_APP:$BT_APP /app/state COPY --from=build /src/target/release/$BT_APP /app/app.bin USER $BT_APP WORKDIR /app ENTRYPOINT ["./app.bin"]