diff --git a/docker/Dockerfile b/docker/Dockerfile
index 62f423629f7fe37f117f0921f5f119843f633237..e7ba621314174c32c2a80ddb401a96dc6be598da 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -21,7 +21,8 @@ WORKDIR /root
 # Copy source tree
 COPY . .
 
-RUN apt-get update && \
+RUN --mount=type=cache,target=/var/cache/apt &&
+    apt-get update && \
     DEBIAN_FRONTEND=noninteractive apt-get install -y clang cmake protobuf-compiler
 
 # build duniter
@@ -34,7 +35,7 @@ RUN if [ "$debug" = 0 ]; then \
     fi
 
 # Configure cross-build environment if need be
-RUN set -x && \
+RUN --mount=type=cache,target=/var/cache/apt && set -x && \
     if [ "$TARGETPLATFORM" != "$BUILDPLATFORM" ]; then \
         . /root/dynenv && \
         apt install -y gcc-$DEBIAN_ARCH_TRIPLET binutils-$DEBIAN_ARCH_TRIPLET && \
@@ -45,7 +46,7 @@ RUN set -x && \
 
 # Build
 ARG chain="gdev"
-RUN set -x && \
+RUN --mount=type=cache,target=build && set -x && \
     cat /root/dynenv && \
     . /root/dynenv && \
     cargo build --locked $CARGO_OPTIONS --no-default-features $BENCH_OPTIONS --features $chain --target "$RUST_ARCH_TRIPLET" && \