FROM rust:bookworm as builder WORKDIR /usr/src/app COPY . . RUN apt-get update -y && apt-get install -y ca-certificates protobuf-compiler && \ apt-get clean autoclean && \ apt-get autoremove --yes && \ rm -rf /var/lib/{apt,dpkg,cache,log}/ # Will build and cache the binary and dependent crates in release mode RUN --mount=type=cache,target=/usr/local/cargo,from=rust:latest,source=/usr/local/cargo \ --mount=type=cache,target=target \ cargo build --release # Runtime image FROM debian:bookworm-slim RUN apt-get update -y && apt-get install -y ca-certificates && \ apt-get clean autoclean && \ apt-get autoremove --yes && \ rm -rf /var/lib/{apt,dpkg,cache,log}/ WORKDIR /app # Get compiled binaries from builder's cargo install directory COPY --from=builder /usr/src/app/target/release/gabrielsimmerdotcom /app/gabrielsimmerdotcom COPY --from=builder /usr/src/app/posts/ /app/posts/ COPY --from=builder /usr/src/app/assets/ /app/assets/ COPY --from=builder /usr/src/app/dhall/ /app/dhall EXPOSE 8080 ENTRYPOINT ["/app/gabrielsimmerdotcom", "--bind", "0.0.0.0:8080"]