From 6fee2f49f3cbcc4337493907151c9535228434ab Mon Sep 17 00:00:00 2001
From: Erik Johnston <erik@matrix.org>
Date: Mon, 17 Oct 2022 18:21:14 +0100
Subject: [PATCH] Cache Rust build cache when building docker images (#14130)

---
 changelog.d/14129.bugfix | 1 +
 changelog.d/14130.misc   | 1 +
 docker/Dockerfile        | 4 +++-
 3 files changed, 5 insertions(+), 1 deletion(-)
 create mode 100644 changelog.d/14129.bugfix
 create mode 100644 changelog.d/14130.misc

diff --git a/changelog.d/14129.bugfix b/changelog.d/14129.bugfix
new file mode 100644
index 0000000000..c392d07d22
--- /dev/null
+++ b/changelog.d/14129.bugfix
@@ -0,0 +1 @@
+Fix pinning Rust dependencies in docker images.
diff --git a/changelog.d/14130.misc b/changelog.d/14130.misc
new file mode 100644
index 0000000000..b801e172f0
--- /dev/null
+++ b/changelog.d/14130.misc
@@ -0,0 +1 @@
+Cache Rust build cache when building docker images.
diff --git a/docker/Dockerfile b/docker/Dockerfile
index f13d45bcd9..7f8756e8a4 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -135,7 +135,9 @@ ARG TEST_ONLY_IGNORE_POETRY_LOCKFILE
 # Install the synapse package itself.
 # If we have populated requirements.txt, we don't install any dependencies
 # as we should already have those from the previous `pip install` step.
-RUN if [ -z "$TEST_ONLY_IGNORE_POETRY_LOCKFILE" ]; then \
+RUN --mount=type=cache,target=/synapse/target,sharing=locked \
+  --mount=type=cache,target=${CARGO_HOME}/registry,sharing=locked \
+  if [ -z "$TEST_ONLY_IGNORE_POETRY_LOCKFILE" ]; then \
     pip install --prefix="/install" --no-deps --no-warn-script-location /synapse[all]; \
   else \
     pip install --prefix="/install" --no-warn-script-location /synapse[all]; \
-- 
GitLab