diff --git a/Dockerfile b/Dockerfile
index d4a9a15b08..9212410a58 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -14,7 +14,10 @@ COPY war/pom.xml war/pom.xml
 COPY daisy-integration/pom.xml daisy-integration/pom.xml
 
 # Download dependencies in a separate layer to allow caching for future builds
-RUN ./mvnw dependency:go-offline --batch-mode --define includeScope=compile
+RUN ./mvnw dependency:go-offline \
+    --batch-mode \
+    --define includeScope=compile  \
+    --activate-profiles docker-dependencies
 
 COPY api/src/ api/src/
 COPY core/src/ core/src/
@@ -23,6 +26,7 @@ COPY war/src/ war/src/
 COPY daisy-integration/src/ daisy-integration/src/
 
 RUN ./mvnw package \
+    --offline \
     --define skipTests \
     --activate-profiles branch,DEV \
     --define skip.npm \
diff --git a/war/pom.xml b/war/pom.xml
index c1dd889587..19e7317b23 100644
--- a/war/pom.xml
+++ b/war/pom.xml
@@ -140,5 +140,46 @@
                 <spring.profile.active>branch</spring.profile.active>
             </properties>
         </profile>
+        <profile>
+            <id>docker-dependencies</id>
+            <!--
+                Some dependencies are not discovered by default when running dependency:go-offline.
+                They are added here manually to allow Docker build layers to be cached properly.
+            -->
+            <dependencies>
+                <dependency>
+                    <groupId>org.jboss.logging</groupId>
+                    <artifactId>jboss-logging</artifactId>
+                </dependency>
+                <dependency>
+                    <groupId>com.fasterxml</groupId>
+                    <artifactId>classmate</artifactId>
+                </dependency>
+                <dependency>
+                    <groupId>net.bytebuddy</groupId>
+                    <artifactId>byte-buddy-agent</artifactId>
+                </dependency>
+                <dependency>
+                    <groupId>com.querydsl</groupId>
+                    <artifactId>querydsl-apt</artifactId>
+                    <version>${querydsl.version}</version>
+                    <classifier>jakarta</classifier>
+                </dependency>
+                <dependency>
+                    <groupId>org.assertj</groupId>
+                    <artifactId>assertj-core</artifactId>
+                    <scope>test</scope>
+                </dependency>
+                <dependency>
+                    <groupId>net.minidev</groupId>
+                    <artifactId>json-smart</artifactId>
+                </dependency>
+                <dependency>
+                    <groupId>org.hamcrest</groupId>
+                    <artifactId>hamcrest-core</artifactId>
+                    <scope>test</scope>
+                </dependency>
+            </dependencies>
+        </profile>
     </profiles>
 </project>