diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b7e24209df4473d06484036f4062d35fe3d0f347..967ea3637fd8556a7b3473c3aa288d1e8f682527 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -40,32 +40,67 @@ verify:
   script:
     - mvn verify $MAVEN_CLI_OPTS
 
+.get-version:
+  before_script:
+    - export PROJECT_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout $MAVEN_CLI_OPTS)
+    - export PROJECT_ARTIFACTID=$(mvn help:evaluate -Dexpression=project.artifactId -q -DforceStdout $MAVEN_CLI_OPTS)
+    - export NEXUS_IMAGE_PREFIX="docker.ozg-sh.de/${PROJECT_ARTIFACTID}"
+
+# Merge request jobs
+push-merge-request-image-gitlab:
+  stage: publish
+  extends: .get-version
+  script:
+    - export IMAGE_TAGS="${CI_REGISTRY_IMAGE}:MR-${CI_MERGE_REQUEST_IID}-${PROJECT_VERSION}"
+    - mvn deploy -Pgitlab-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
+  rules:
+    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
+
+push-merge-request-image-nexus:
+  stage: publish
+  extends: .get-version
+  script:
+    - export IMAGE_TAGS="${NEXUS_IMAGE_PREFIX}:MR-${CI_MERGE_REQUEST_IID}-${PROJECT_VERSION}"
+    - mvn deploy -Pnexus-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
+  rules:
+    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
+
+# Snapshot jobs
 push-snapshot-image-gitlab:
   stage: publish
+  extends: .get-version
   script:
+    - export IMAGE_TAGS="${CI_REGISTRY_IMAGE}:main-${PROJECT_VERSION},${CI_REGISTRY_IMAGE}:snapshot-latest"
     - mvn deploy -Pgitlab-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
   only:
     - main
 
 push-snapshot-image-nexus:
   stage: publish
+  extends: .get-version
   script:
+    - export IMAGE_TAGS="${NEXUS_IMAGE_PREFIX}:main-${PROJECT_VERSION},${NEXUS_IMAGE_PREFIX}:snapshot-latest"
     - mvn deploy -Pnexus-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
   only:
     - main
 
+# Release jobs
 push-release-image-gitlab:
   stage: publish
+  extends: .get-version
   script:
-    - mvn versions:set -DnewVersion=${CI_COMMIT_TAG}
+    - mvn versions:set -DnewVersion=${CI_COMMIT_TAG} $MAVEN_CLI_OPTS
+    - export IMAGE_TAGS="${CI_REGISTRY_IMAGE}:release-${CI_COMMIT_TAG},${CI_REGISTRY_IMAGE}:latest"
     - mvn deploy -Pgitlab-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
   rules:
     - if: $CI_COMMIT_TAG
 
 push-release-image-nexus:
   stage: publish
+  extends: .get-version
   script:
-    - mvn versions:set -DnewVersion=${CI_COMMIT_TAG}
-    - mvn mvn deploy -Pnexus-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
+    - mvn versions:set -DnewVersion=${CI_COMMIT_TAG} $MAVEN_CLI_OPTS
+    - export IMAGE_TAGS="${NEXUS_IMAGE_PREFIX}:release-${CI_COMMIT_TAG},${NEXUS_IMAGE_PREFIX}:latest"
+    - mvn deploy -Pnexus-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
   rules:
     - if: $CI_COMMIT_TAG
diff --git a/pom.xml b/pom.xml
index 2b90d9c8c11578a0164be08cf9b88d1e09132eb9..9a37ccd2af2a042da6e77019458b51e80eca7e10 100644
--- a/pom.xml
+++ b/pom.xml
@@ -239,6 +239,28 @@
 					<url>${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/maven</url>
 				</snapshotRepository>
 			</distributionManagement>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.springframework.boot</groupId>
+						<artifactId>spring-boot-maven-plugin</artifactId>
+						<configuration>
+							<image>
+								<name>${CI_REGISTRY_IMAGE}/${project.artifactId}</name>
+								<tags>${IMAGE_TAGS}</tags>
+								<publish>true</publish>
+							</image>
+							<docker>
+								<publishRegistry>
+									<url>code.schleswig-holstein.de</url>
+									<username>${CI_REGISTRY_USER}</username>
+									<password>${CI_REGISTRY_PASSWORD}</password>
+								</publishRegistry>
+							</docker>
+						</configuration>
+					</plugin>
+				</plugins>
+			</build>
 		</profile>
 		<profile>
 			<id>nexus-deploy</id>
@@ -257,6 +279,28 @@
 					<url>https://nexus.ozg-sh.de/repository/ozg-snapshots/</url>
 				</snapshotRepository>
 			</distributionManagement>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.springframework.boot</groupId>
+						<artifactId>spring-boot-maven-plugin</artifactId>
+						<configuration>
+							<image>
+								<name>docker.ozg-sh.de/${project.artifactId}</name>
+								<tags>${IMAGE_TAGS}</tags>
+								<publish>true</publish>
+							</image>
+							<docker>
+								<publishRegistry>
+									<url>docker.ozg-sh.de</url>
+									<username>${NEXUS_USER}</username>
+									<password>${NEXUS_PASSWORD}</password>
+								</publishRegistry>
+							</docker>
+						</configuration>
+					</plugin>
+				</plugins>
+			</build>
 		</profile>
 	</profiles>
 </project>