From 15a7815ec39bdb11df38adcd2e6693cbdc93c54f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Gonz=C3=A1lez?= <7822554+AlexTMjugador@users.noreply.github.com> Date: Wed, 8 Oct 2025 18:03:15 +0200 Subject: [PATCH] perf(Dockerfile): improve Docker cache mounts usage (#4507) As described in https://hackmd.io/jgkoQ24YRW6i0xWd73S64A#Using-Docker-cache-mounts, cache mounts need to be used with a fairly specific syntax for caching of previously build Rust artifacts to be as effective as it can be. --- apps/daedalus_client/Dockerfile | 13 ++++++------- apps/labrinth/Dockerfile | 17 ++++++++--------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/apps/daedalus_client/Dockerfile b/apps/daedalus_client/Dockerfile index e5f083fc4..8a7d1881c 100644 --- a/apps/daedalus_client/Dockerfile +++ b/apps/daedalus_client/Dockerfile @@ -5,15 +5,14 @@ FROM rust:1.89.0 AS build WORKDIR /usr/src/daedalus COPY . . RUN --mount=type=cache,target=/usr/src/daedalus/target \ - --mount=type=cache,target=/usr/local/cargo/git/db \ - --mount=type=cache,target=/usr/local/cargo/registry \ - cargo build --release --package daedalus_client + --mount=type=cache,target=/usr/local/cargo,from=rust:1.89.0,source=/usr/local/cargo \ + cargo build --release --package daedalus_client FROM build AS artifacts RUN --mount=type=cache,target=/usr/src/daedalus/target \ - mkdir /daedalus \ - && cp /usr/src/daedalus/target/release/daedalus_client /daedalus/daedalus_client + mkdir /daedalus \ + && cp /usr/src/daedalus/target/release/daedalus_client /daedalus/daedalus_client FROM debian:bookworm-slim @@ -23,8 +22,8 @@ LABEL org.opencontainers.image.description="Modrinth game metadata query client" LABEL org.opencontainers.image.licenses=MIT RUN apt-get update \ - && apt-get install -y --no-install-recommends ca-certificates openssl \ - && rm -rf /var/lib/apt/lists/* + && apt-get install -y --no-install-recommends ca-certificates openssl \ + && rm -rf /var/lib/apt/lists/* COPY --from=artifacts /daedalus /daedalus diff --git a/apps/labrinth/Dockerfile b/apps/labrinth/Dockerfile index 3df71b8c7..d35198c2b 100644 --- a/apps/labrinth/Dockerfile +++ b/apps/labrinth/Dockerfile @@ -6,17 +6,16 @@ WORKDIR /usr/src/labrinth COPY . . ARG GIT_HASH RUN --mount=type=cache,target=/usr/src/labrinth/target \ - --mount=type=cache,target=/usr/local/cargo/git/db \ - --mount=type=cache,target=/usr/local/cargo/registry \ - SQLX_OFFLINE=true cargo build --profile release-labrinth --package labrinth + --mount=type=cache,target=/usr/local/cargo,from=rust:1.89.0,source=/usr/local/cargo \ + SQLX_OFFLINE=true cargo build --profile release-labrinth --package labrinth FROM build AS artifacts RUN --mount=type=cache,target=/usr/src/labrinth/target \ - mkdir /labrinth \ - && cp /usr/src/labrinth/target/release-labrinth/labrinth /labrinth/labrinth \ - && cp -r /usr/src/labrinth/apps/labrinth/migrations /labrinth \ - && cp -r /usr/src/labrinth/apps/labrinth/assets /labrinth + mkdir /labrinth \ + && cp /usr/src/labrinth/target/release-labrinth/labrinth /labrinth/labrinth \ + && cp -r /usr/src/labrinth/apps/labrinth/migrations /labrinth \ + && cp -r /usr/src/labrinth/apps/labrinth/assets /labrinth FROM debian:bookworm-slim @@ -26,8 +25,8 @@ LABEL org.opencontainers.image.description="Modrinth API" LABEL org.opencontainers.image.licenses=AGPL-3.0-only RUN apt-get update \ - && apt-get install -y --no-install-recommends ca-certificates dumb-init curl \ - && rm -rf /var/lib/apt/lists/* + && apt-get install -y --no-install-recommends ca-certificates dumb-init curl \ + && rm -rf /var/lib/apt/lists/* COPY --from=artifacts /labrinth /labrinth