# User should build from parent directory FROM lukemathwalker/cargo-chef:latest-rust-1.77 as chef WORKDIR /app RUN apt update && apt install lld clang protobuf-compiler -y # FROM chef as planner # COPY . . # # Compute a lock-like file for our project # WORKDIR /app/admin_frontend # RUN cargo chef prepare --recipe-path recipe.json # # FROM chef as builder # COPY . . # WORKDIR /app/admin_frontend # COPY --from=planner /app/admin_frontend/recipe.json recipe.json # # Build our project dependencies # RUN cargo chef cook --release --recipe-path recipe.json # # # Build the project # RUN cargo build --release --bin admin_frontend # Chef failed to build, so we're using the following instead FROM chef as builder COPY . . WORKDIR /app/admin_frontend RUN cargo build --release --bin admin_frontend FROM debian AS runtime WORKDIR /app RUN apt-get update -y \ && apt-get install -y --no-install-recommends libc6 libssl-dev \ # Clean up && apt-get autoremove -y \ && apt-get clean -y \ && rm -rf /var/lib/apt/lists/* COPY --from=builder /app/target/release/admin_frontend /usr/local/bin/admin_frontend COPY --from=builder /app/admin_frontend/assets /app/assets ENV RUST_BACKTRACE 1 ENV RUST_LOG info ARG ADMIN_FRONTEND_PORT ARG PORT ENV PORT=${ADMIN_FRONTEND_PORT:-${PORT:-3000}} EXPOSE $PORT CMD ["admin_frontend"]