# syntax=docker/dockerfile:1 FROM rust:1.80-slim-bookworm AS chef RUN apt-get update && apt-get install -y --no-install-recommends \ pkg-config \ libssl-dev \ git \ g++ \ make \ cmake \ && rm -rf /var/lib/apt/lists/* RUN cargo install cargo-chef WORKDIR /app FROM chef AS planner COPY . . RUN git submodule update --init RUN cargo chef prepare --recipe-path recipe.json FROM chef AS builder COPY --from=planner /app/recipe.json recipe.json RUN --mount=type=cache,target=/usr/local/cargo/registry \ --mount=type=cache,target=/app/target \ cargo chef cook --release --recipe-path recipe.json COPY . . RUN git submodule update --init RUN --mount=type=cache,target=/usr/local/cargo/registry \ --mount=type=cache,target=/app/target \ cargo build --release && \ mkdir -p /app/dist && \ cp /app/target/release/spacebot /app/dist/ FROM debian:bookworm-slim AS final WORKDIR /app RUN apt-get update && apt-get install -y --no-install-recommends \ python3 \ libssl3 \ ca-certificates \ && rm -rf /var/lib/apt/lists/* COPY --from=builder /app/dist/spacebot ./spacebot ENTRYPOINT ["./spacebot"]