FROM docker.io/rust:1-slim-bookworm AS build ## cargo package name: customize here or provide via --build-arg ARG pkg=backend ARG DATABASE_URL WORKDIR /build COPY .cargo .cargo COPY cdn cdn COPY src src COPY Cargo.toml Cargo.toml COPY Rocket.toml Rocket.toml COPY static static COPY templates templates RUN apt-get update && apt-get install -y libssl-dev pkg-config RUN --mount=type=cache,target=/build/target \ --mount=type=cache,target=/usr/local/cargo/registry \ --mount=type=cache,target=/usr/local/cargo/git \ set -eux; \ cargo build --release; \ objcopy --compress-debug-sections target/release/$pkg ./main ################################################################################ FROM docker.io/debian:bookworm-slim RUN apt-get update && apt-get install -y libssl-dev pkg-config WORKDIR /app ## copy the main binary COPY --from=build /build/main ./ ## copy runtime assets which may or may not exist COPY --from=build /build/Rocket.toml ./Rocket.toml COPY --from=build /build/static ./static COPY --from=build /build/cdn ./cdn COPY --from=build /build/template[s] ./templates ## ensure the container listens globally on port 8000 ENV ROCKET_ADDRESS=0.0.0.0 ENV ROCKET_PORT=8000 CMD ./main