Skip to content

Commit 65ee074

Browse files
committed
fix(docker): Use sharing=locked for cache mounts
We need to ensure safe mutable access to the apt cache directories, as the build has started to fail when this is not the case. This change sets the `sharing` option to `locked` for the cache mounts to ensure serialized access to the cache directories.
1 parent 90e894c commit 65ee074

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

Dockerfile

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -265,8 +265,8 @@ COPY --link --from=tools-script /bin/* /bin/
265265
# A Go build environment.
266266
FROM docker.io/library/golang:1.22 as go
267267
RUN --mount=type=cache,from=apt-base,source=/etc/apt,target=/etc/apt,ro \
268-
--mount=type=cache,from=apt-base,source=/var/cache/apt,target=/var/cache/apt \
269-
--mount=type=cache,from=apt-base,source=/var/lib/apt/lists,target=/var/lib/apt/lists,ro \
268+
--mount=type=cache,from=apt-base,source=/var/cache/apt,target=/var/cache/apt,sharing=locked \
269+
--mount=type=cache,from=apt-base,source=/var/lib/apt/lists,target=/var/lib/apt/lists,sharing=locked \
270270
DEBIAN_FRONTEND=noninteractive apt-get install -y file jo jq
271271
COPY --link --from=tools-script /bin/* /usr/local/bin/
272272
COPY --link --from=tools-go /bin/* /usr/local/bin/
@@ -279,8 +279,8 @@ ENV PROTOC_NO_VENDOR=1 \
279279
# A Rust build environment.
280280
FROM docker.io/rust:1.76-slim-bookworm as rust
281281
RUN --mount=type=cache,from=apt-base,source=/etc/apt,target=/etc/apt,ro \
282-
--mount=type=cache,from=apt-base,source=/var/cache/apt,target=/var/cache/apt \
283-
--mount=type=cache,from=apt-base,source=/var/lib/apt/lists,target=/var/lib/apt/lists,ro \
282+
--mount=type=cache,from=apt-base,source=/var/cache/apt,target=/var/cache/apt,sharing=locked \
283+
--mount=type=cache,from=apt-base,source=/var/lib/apt/lists,target=/var/lib/apt/lists,sharing=locked \
284284
DEBIAN_FRONTEND=noninteractive apt-get install -y \
285285
cmake \
286286
curl \
@@ -291,8 +291,8 @@ RUN --mount=type=cache,from=apt-base,source=/etc/apt,target=/etc/apt,ro \
291291
libssl-dev \
292292
pkg-config
293293
RUN --mount=type=cache,from=apt-llvm,source=/etc/apt,target=/etc/apt,ro \
294-
--mount=type=cache,from=apt-llvm,source=/var/cache/apt,target=/var/cache/apt \
295-
--mount=type=cache,from=apt-llvm,source=/var/lib/apt/lists,target=/var/lib/apt/lists,ro \
294+
--mount=type=cache,from=apt-llvm,source=/var/cache/apt,target=/var/cache/apt,sharing=locked \
295+
--mount=type=cache,from=apt-llvm,source=/var/lib/apt/lists,target=/var/lib/apt/lists,sharing=locked \
296296
DEBIAN_FRONTEND=noninteractive apt-get install -y clang-14 llvm-14
297297
RUN rustup component add clippy rustfmt
298298
COPY --link --from=tools-lint /bin/checksec /usr/local/bin/
@@ -317,8 +317,8 @@ RUN rustup target add \
317317
armv7-unknown-linux-musleabihf \
318318
x86_64-unknown-linux-musl
319319
RUN --mount=type=cache,from=apt-base,source=/etc/apt,target=/etc/apt,ro \
320-
--mount=type=cache,from=apt-base,source=/var/cache/apt,target=/var/cache/apt \
321-
--mount=type=cache,from=apt-base,source=/var/lib/apt/lists,target=/var/lib/apt/lists,ro \
320+
--mount=type=cache,from=apt-base,source=/var/cache/apt,target=/var/cache/apt,sharing=locked \
321+
--mount=type=cache,from=apt-base,source=/var/lib/apt/lists,target=/var/lib/apt/lists,sharing=locked \
322322
DEBIAN_FRONTEND=noninteractive apt-get install -y \
323323
g++-aarch64-linux-gnu \
324324
g++-arm-linux-gnueabihf \
@@ -333,8 +333,8 @@ RUN --mount=type=cache,from=apt-base,source=/etc/apt,target=/etc/apt,ro \
333333

334334
FROM docker.io/library/debian:bookworm as devcontainer
335335
RUN --mount=type=cache,from=apt-base,source=/etc/apt,target=/etc/apt,ro \
336-
--mount=type=cache,from=apt-base,source=/var/cache/apt,target=/var/cache/apt \
337-
--mount=type=cache,from=apt-base,source=/var/lib/apt/lists,target=/var/lib/apt/lists,ro \
336+
--mount=type=cache,from=apt-base,source=/var/cache/apt,target=/var/cache/apt,sharing=locked \
337+
--mount=type=cache,from=apt-base,source=/var/lib/apt/lists,target=/var/lib/apt/lists,sharing=locked \
338338
DEBIAN_FRONTEND=noninteractive apt-get install -y \
339339
cmake \
340340
curl \
@@ -371,13 +371,13 @@ RUN groupadd --gid=1000 code \
371371

372372
# git v2.34+ has new subcommands and supports code signing via SSH.
373373
RUN --mount=type=cache,from=apt-base,source=/etc/apt,target=/etc/apt,ro \
374-
--mount=type=cache,from=apt-base,source=/var/cache/apt,target=/var/cache/apt \
375-
--mount=type=cache,from=apt-base,source=/var/lib/apt/lists,target=/var/lib/apt/lists,ro \
374+
--mount=type=cache,from=apt-base,source=/var/cache/apt,target=/var/cache/apt,sharing=locked \
375+
--mount=type=cache,from=apt-base,source=/var/lib/apt/lists,target=/var/lib/apt/lists,sharing=locked \
376376
DEBIAN_FRONTEND=noninteractive apt-get install -y -t bookworm-backports git
377377

378378
RUN --mount=type=cache,from=apt-llvm,source=/etc/apt,target=/etc/apt,ro \
379-
--mount=type=cache,from=apt-llvm,source=/var/cache/apt,target=/var/cache/apt \
380-
--mount=type=cache,from=apt-llvm,source=/var/lib/apt/lists,target=/var/lib/apt/lists,ro \
379+
--mount=type=cache,from=apt-llvm,source=/var/cache/apt,target=/var/cache/apt,sharing=locked \
380+
--mount=type=cache,from=apt-llvm,source=/var/lib/apt/lists,target=/var/lib/apt/lists,sharing=locked \
381381
DEBIAN_FRONTEND=noninteractive apt-get install -y clang-14 llvm-14
382382

383383
# Use microsoft's Docker setup script to install the Docker CLI.
@@ -387,16 +387,16 @@ RUN --mount=type=cache,from=apt-llvm,source=/etc/apt,target=/etc/apt,ro \
387387
#
388388
# TODO(ver): replace this with a devcontainer feature?
389389
RUN --mount=type=cache,id=apt-docker,from=apt-base,source=/etc/apt,target=/etc/apt \
390-
--mount=type=cache,id=apt-docker,from=apt-base,source=/var/cache/apt,target=/var/cache/apt \
391-
--mount=type=cache,id=apt-docker,from=apt-base,source=/var/lib/apt/lists,target=/var/lib/apt/lists \
390+
--mount=type=cache,id=apt-docker,from=apt-base,source=/var/cache/apt,target=/var/cache/apt,sharing=locked \
391+
--mount=type=cache,id=apt-docker,from=apt-base,source=/var/lib/apt/lists,target=/var/lib/apt/lists,sharing=locked \
392392
--mount=type=bind,from=tools,source=/bin/scurl,target=/usr/local/bin/scurl \
393393
scurl https://raw.githubusercontent.com/microsoft/vscode-dev-containers/main/script-library/docker-debian.sh | bash -s
394394
ENV DOCKER_BUILDKIT=1
395395

396396
ARG MARKDOWNLINT_VERSION=0.10.0
397397
RUN --mount=type=cache,from=apt-node,source=/etc/apt,target=/etc/apt,ro \
398-
--mount=type=cache,from=apt-node,source=/var/cache/apt,target=/var/cache/apt \
399-
--mount=type=cache,from=apt-node,source=/var/lib/apt/lists,target=/var/lib/apt/lists \
398+
--mount=type=cache,from=apt-node,source=/var/cache/apt,target=/var/cache/apt,sharing=locked \
399+
--mount=type=cache,from=apt-node,source=/var/lib/apt/lists,target=/var/lib/apt/lists,sharing=locked \
400400
DEBIAN_FRONTEND=noninteractive apt-get install -y nodejs
401401
RUN npm install "markdownlint-cli2@${MARKDOWNLINT_VERSION}" --global
402402

0 commit comments

Comments
 (0)