diff --git a/docker/docker-caching/multi-module-caching/Dockerfile b/docker/docker-caching/multi-module-caching/Dockerfile
new file mode 100644
index 0000000000..96ebe2a76b
--- /dev/null
+++ b/docker/docker-caching/multi-module-caching/Dockerfile
@@ -0,0 +1,21 @@
+FROM maven:alpine as build
+ENV HOME=/usr/app
+RUN mkdir -p $HOME
+WORKDIR $HOME
+
+ADD pom.xml $HOME
+ADD core/pom.xml $HOME/core/pom.xml
+ADD runner/pom.xml $HOME/runner/pom.xml
+
+RUN mvn -pl core verify --fail-never
+ADD core $HOME/core
+RUN mvn -pl core install
+RUN mvn -pl runner verify --fail-never
+ADD runner $HOME/runner
+RUN mvn -pl core,runner package
+
+FROM openjdk:8-jdk-alpine
+
+COPY --from=build /usr/app/runner/target/runner-0.0.1-SNAPSHOT-jar-with-dependencies.jar /app/runner.jar
+
+ENTRYPOINT java -jar /app/runner.jar
\ No newline at end of file
diff --git a/docker/docker-caching/multi-module-caching/Dockerfile-Buildkit b/docker/docker-caching/multi-module-caching/Dockerfile-Buildkit
new file mode 100644
index 0000000000..e89ce38e4b
--- /dev/null
+++ b/docker/docker-caching/multi-module-caching/Dockerfile-Buildkit
@@ -0,0 +1,13 @@
+FROM maven:alpine as build
+ENV HOME=/usr/app
+RUN mkdir -p $HOME
+WORKDIR $HOME
+
+ADD . $HOME
+RUN --mount=type=cache,target=/root/.m2 mvn -f $HOME/pom.xml clean package
+
+FROM openjdk:8-jdk-alpine
+
+COPY --from=build /usr/app/runner/target/runner-0.0.1-SNAPSHOT-jar-with-dependencies.jar /app/runner.jar
+
+ENTRYPOINT java -jar /app/runner.jar
\ No newline at end of file
diff --git a/docker/docker-caching/multi-module-caching/core/pom.xml b/docker/docker-caching/multi-module-caching/core/pom.xml
new file mode 100644
index 0000000000..eeeb5a6e5b
--- /dev/null
+++ b/docker/docker-caching/multi-module-caching/core/pom.xml
@@ -0,0 +1,25 @@
+
+
+ 4.0.0
+ core
+
+
+ multi-module-caching
+ com.baeldung
+ 0.0.1-SNAPSHOT
+
+
+
+
+ com.google.guava
+ guava
+
+
+
+
+ 8
+ 8
+
+
\ No newline at end of file
diff --git a/docker/docker-caching/multi-module-caching/core/src/main/java/com/baeldung/maven_caching/CoreClass.java b/docker/docker-caching/multi-module-caching/core/src/main/java/com/baeldung/maven_caching/CoreClass.java
new file mode 100644
index 0000000000..d8c73a331a
--- /dev/null
+++ b/docker/docker-caching/multi-module-caching/core/src/main/java/com/baeldung/maven_caching/CoreClass.java
@@ -0,0 +1,14 @@
+package com.baeldung.maven_caching;
+
+import com.google.common.io.Files;
+
+public class CoreClass {
+
+ public String method() {
+ return "Hello from core module!!";
+ }
+
+ public String dependencyMethod() {
+ return Files.simplifyPath("/home/app/test");
+ }
+}
diff --git a/docker/docker-caching/multi-module-caching/pom.xml b/docker/docker-caching/multi-module-caching/pom.xml
new file mode 100644
index 0000000000..7968114385
--- /dev/null
+++ b/docker/docker-caching/multi-module-caching/pom.xml
@@ -0,0 +1,29 @@
+
+
+ 4.0.0
+ com.baeldung
+ multi-module-caching
+ 0.0.1-SNAPSHOT
+ Multi-module Maven caching example
+ pom
+
+
+
+
+ com.google.guava
+ guava
+ 31.0.1-jre
+
+
+
+
+
+ 1.8
+
+
+
+ runner
+ core
+
+
diff --git a/docker/docker-caching/multi-module-caching/runner/pom.xml b/docker/docker-caching/multi-module-caching/runner/pom.xml
new file mode 100644
index 0000000000..e3654bff17
--- /dev/null
+++ b/docker/docker-caching/multi-module-caching/runner/pom.xml
@@ -0,0 +1,56 @@
+
+
+ 4.0.0
+ runner
+
+
+ multi-module-caching
+ com.baeldung
+ 0.0.1-SNAPSHOT
+
+
+
+
+ com.baeldung
+ core
+ 0.0.1-SNAPSHOT
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+ 3.3.0
+
+
+ jar-with-dependencies
+
+
+
+ true
+ com.baeldung.maven_caching.MavenCachingApplication
+
+
+
+
+
+ assemble-all
+ package
+
+ single
+
+
+
+
+
+
+
+
+ 8
+ 8
+
+
\ No newline at end of file
diff --git a/docker/docker-caching/multi-module-caching/runner/src/main/java/com/baeldung/maven_caching/MavenCachingApplication.java b/docker/docker-caching/multi-module-caching/runner/src/main/java/com/baeldung/maven_caching/MavenCachingApplication.java
new file mode 100644
index 0000000000..3673dd86c1
--- /dev/null
+++ b/docker/docker-caching/multi-module-caching/runner/src/main/java/com/baeldung/maven_caching/MavenCachingApplication.java
@@ -0,0 +1,11 @@
+package com.baeldung.maven_caching;
+
+public class MavenCachingApplication {
+
+ public static void main(String[] args) {
+ CoreClass cc = new CoreClass();
+ System.out.println(cc.method());
+ System.out.println(cc.dependencyMethod());
+ }
+
+}
diff --git a/docker/docker-caching/single-module-caching/Dockerfile b/docker/docker-caching/single-module-caching/Dockerfile
new file mode 100644
index 0000000000..02157c0dd6
--- /dev/null
+++ b/docker/docker-caching/single-module-caching/Dockerfile
@@ -0,0 +1,15 @@
+FROM maven:alpine as build
+ENV HOME=/usr/app
+RUN mkdir -p $HOME
+WORKDIR $HOME
+ADD pom.xml $HOME
+RUN mvn verify --fail-never
+
+ADD . $HOME
+RUN mvn package
+
+FROM openjdk:8-jdk-alpine
+
+COPY --from=build /usr/app/target/single-module-caching-1.0-SNAPSHOT-jar-with-dependencies.jar /app/runner.jar
+
+ENTRYPOINT java -jar /app/runner.jar
\ No newline at end of file
diff --git a/docker/docker-caching/single-module-caching/Dockerfile-Buildkit b/docker/docker-caching/single-module-caching/Dockerfile-Buildkit
new file mode 100644
index 0000000000..29384ce208
--- /dev/null
+++ b/docker/docker-caching/single-module-caching/Dockerfile-Buildkit
@@ -0,0 +1,13 @@
+FROM maven:alpine as build
+ENV HOME=/usr/app
+RUN mkdir -p $HOME
+WORKDIR $HOME
+ADD . $HOME
+
+RUN --mount=type=cache,target=/root/.m2 mvn -f $HOME/pom.xml clean package
+
+FROM openjdk:8-jdk-alpine
+
+COPY --from=build /usr/app/target/single-module-caching-1.0-SNAPSHOT-jar-with-dependencies.jar /app/runner.jar
+
+ENTRYPOINT java -jar /app/runner.jar
\ No newline at end of file
diff --git a/docker/docker-caching/single-module-caching/pom.xml b/docker/docker-caching/single-module-caching/pom.xml
new file mode 100644
index 0000000000..386b040138
--- /dev/null
+++ b/docker/docker-caching/single-module-caching/pom.xml
@@ -0,0 +1,53 @@
+
+
+ 4.0.0
+
+ com.baeldung
+ single-module-caching
+ 1.0-SNAPSHOT
+
+
+
+ com.google.guava
+ guava
+ 31.0.1-jre
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+ 3.3.0
+
+
+ jar-with-dependencies
+
+
+
+ true
+ com.baeldung.maven_caching.MavenCachingMain
+
+
+
+
+
+ assemble-all
+ package
+
+ single
+
+
+
+
+
+
+
+
+ 8
+ 8
+
+
\ No newline at end of file
diff --git a/docker/docker-caching/single-module-caching/src/main/java/com/baeldung/maven_caching/MavenCachingMain.java b/docker/docker-caching/single-module-caching/src/main/java/com/baeldung/maven_caching/MavenCachingMain.java
new file mode 100644
index 0000000000..4fbd8e5311
--- /dev/null
+++ b/docker/docker-caching/single-module-caching/src/main/java/com/baeldung/maven_caching/MavenCachingMain.java
@@ -0,0 +1,11 @@
+package com.baeldung.maven_caching;
+
+import com.google.common.io.Files;
+
+public class MavenCachingMain {
+
+ public static void main(String[] args) {
+ System.out.println("Hello from maven_caching app!!!");
+ System.out.println(Files.simplifyPath("/home/app/test"));
+ }
+}
diff --git a/docker/pom.xml b/docker/pom.xml
index f481f1b8b7..5c6267c6dd 100644
--- a/docker/pom.xml
+++ b/docker/pom.xml
@@ -26,6 +26,8 @@
docker-internal-dto
docker-spring-boot
docker-sample-app
+ docker-caching/single-module-caching
+ docker-caching/multi-module-caching