diff --git a/Dockerfile b/Dockerfile index 1a2dba5..f73b09e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,8 @@ RUN cargo install cargo-chef --locked && \ WORKDIR /app FROM chef AS planner -COPY . . +COPY Cargo.* ./ +COPY src ./src RUN cargo chef prepare --recipe-path recipe.json FROM chef AS cacher @@ -31,13 +32,19 @@ ENV CC=clang \ PATH="/root/.cargo/bin:${PATH}" COPY --from=planner /app/recipe.json recipe.json -RUN cargo chef cook --release --target ${TARGET_ARCH} --recipe-path recipe.json +RUN --mount=type=cache,target=/root/.cargo/registry \ + --mount=type=cache,target=/root/.cargo/git \ + --mount=type=cache,target=/app/target \ + cargo chef cook --release --target ${TARGET_ARCH} --recipe-path recipe.json FROM cacher AS builder ARG TARGET_ARCH -COPY . . +COPY src ./src COPY --from=cacher /app/target /app/target -RUN cargo build -vv --release --jobs $(nproc) --target ${TARGET_ARCH} +RUN --mount=type=cache,target=/root/.cargo/registry \ + --mount=type=cache,target=/root/.cargo/git \ + --mount=type=cache,target=/app/target \ + cargo build --release --jobs $(nproc) --target ${TARGET_ARCH} FROM gcr.io/distroless/static:nonroot AS minimal ARG TARGET_ARCH