Skip to content

Commit 15a7815

Browse files
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.
1 parent 6919c8d commit 15a7815

File tree

2 files changed

+14
-16
lines changed

2 files changed

+14
-16
lines changed

apps/daedalus_client/Dockerfile

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,14 @@ FROM rust:1.89.0 AS build
55
WORKDIR /usr/src/daedalus
66
COPY . .
77
RUN --mount=type=cache,target=/usr/src/daedalus/target \
8-
--mount=type=cache,target=/usr/local/cargo/git/db \
9-
--mount=type=cache,target=/usr/local/cargo/registry \
10-
cargo build --release --package daedalus_client
8+
--mount=type=cache,target=/usr/local/cargo,from=rust:1.89.0,source=/usr/local/cargo \
9+
cargo build --release --package daedalus_client
1110

1211
FROM build AS artifacts
1312

1413
RUN --mount=type=cache,target=/usr/src/daedalus/target \
15-
mkdir /daedalus \
16-
&& cp /usr/src/daedalus/target/release/daedalus_client /daedalus/daedalus_client
14+
mkdir /daedalus \
15+
&& cp /usr/src/daedalus/target/release/daedalus_client /daedalus/daedalus_client
1716

1817
FROM debian:bookworm-slim
1918

@@ -23,8 +22,8 @@ LABEL org.opencontainers.image.description="Modrinth game metadata query client"
2322
LABEL org.opencontainers.image.licenses=MIT
2423

2524
RUN apt-get update \
26-
&& apt-get install -y --no-install-recommends ca-certificates openssl \
27-
&& rm -rf /var/lib/apt/lists/*
25+
&& apt-get install -y --no-install-recommends ca-certificates openssl \
26+
&& rm -rf /var/lib/apt/lists/*
2827

2928
COPY --from=artifacts /daedalus /daedalus
3029

apps/labrinth/Dockerfile

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,16 @@ WORKDIR /usr/src/labrinth
66
COPY . .
77
ARG GIT_HASH
88
RUN --mount=type=cache,target=/usr/src/labrinth/target \
9-
--mount=type=cache,target=/usr/local/cargo/git/db \
10-
--mount=type=cache,target=/usr/local/cargo/registry \
11-
SQLX_OFFLINE=true cargo build --profile release-labrinth --package labrinth
9+
--mount=type=cache,target=/usr/local/cargo,from=rust:1.89.0,source=/usr/local/cargo \
10+
SQLX_OFFLINE=true cargo build --profile release-labrinth --package labrinth
1211

1312
FROM build AS artifacts
1413

1514
RUN --mount=type=cache,target=/usr/src/labrinth/target \
16-
mkdir /labrinth \
17-
&& cp /usr/src/labrinth/target/release-labrinth/labrinth /labrinth/labrinth \
18-
&& cp -r /usr/src/labrinth/apps/labrinth/migrations /labrinth \
19-
&& cp -r /usr/src/labrinth/apps/labrinth/assets /labrinth
15+
mkdir /labrinth \
16+
&& cp /usr/src/labrinth/target/release-labrinth/labrinth /labrinth/labrinth \
17+
&& cp -r /usr/src/labrinth/apps/labrinth/migrations /labrinth \
18+
&& cp -r /usr/src/labrinth/apps/labrinth/assets /labrinth
2019

2120
FROM debian:bookworm-slim
2221

@@ -26,8 +25,8 @@ LABEL org.opencontainers.image.description="Modrinth API"
2625
LABEL org.opencontainers.image.licenses=AGPL-3.0-only
2726

2827
RUN apt-get update \
29-
&& apt-get install -y --no-install-recommends ca-certificates dumb-init curl \
30-
&& rm -rf /var/lib/apt/lists/*
28+
&& apt-get install -y --no-install-recommends ca-certificates dumb-init curl \
29+
&& rm -rf /var/lib/apt/lists/*
3130

3231
COPY --from=artifacts /labrinth /labrinth
3332

0 commit comments

Comments
 (0)