Dockerfile 797 B

123456789101112131415161718192021222324252627282930
  1. FROM archlinux:base-devel AS build
  2. ARG BT_APP
  3. ARG BT_DEPENDS
  4. RUN pacman -Syu --noconfirm
  5. RUN pacman -S --noconfirm rustup clang $BT_DEPENDS
  6. RUN rustup toolchain install nightly
  7. RUN rustup default nightly
  8. RUN mkdir -p src/crates
  9. COPY ./crates /src/crates
  10. COPY Cargo.toml /src/
  11. COPY Cargo.lock /src/
  12. WORKDIR /src
  13. RUN cargo fetch --target x86_64-unknown-linux-gnu
  14. WORKDIR /src/crates/$BT_APP
  15. RUN cargo build --release
  16. FROM archlinux:base AS release
  17. ARG BT_APP
  18. ARG BT_DEPENDS
  19. ENV BT_APP=$BT_APP
  20. RUN pacman -Syu --noconfirm\
  21. && pacman -S --noconfirm $BT_DEPENDS\
  22. && pacman -Scc --noconfirm\
  23. && useradd $BT_APP \
  24. && mkdir -p /app/state\
  25. && chown $BT_APP:$BT_APP /app/state
  26. COPY --from=build /src/target/release/$BT_APP /app/app.bin
  27. USER $BT_APP
  28. WORKDIR /app
  29. ENTRYPOINT ["./app.bin"]