]> juplo.de Git - demos/kafka/training/commitdiff
refactor: Docker-Build auf bootBuildImage (Cloud Native Buildpacks) umstellen consumer/nodlt--BACKUP-ORIGIN--LAST
authorClaude <noreply@anthropic.com>
Sun, 17 May 2026 15:03:21 +0000 (15:03 +0000)
committerKai Moritz <kai@juplo.de>
Sun, 17 May 2026 15:41:06 +0000 (17:41 +0200)
Bisher baute Maven den Docker-Image via io.fabric8:docker-maven-plugin und
ein handgepflegtes Dockerfile. Gradle kopierte das JAR umständlich in ein
target/-Verzeichnis, damit dasselbe Dockerfile funktioniert (COPY target/*.jar).

Beide Build-Systeme nutzen jetzt bootBuildImage, das über Cloud Native
Buildpacks direkt aus dem Spring Boot Plugin heraus ein OCI-Image erzeugt:

  Maven:  mvn spring-boot:build-image
  Gradle: ./gradlew bootBuildImage

Vorteile:
- Kein Dockerfile mehr nötig (und damit kein Kopier-Hack in Gradle)
- Beide Build-Systeme verwenden dieselbe Methode mit identischer Konfiguration
- Das erzeugte Image folgt automatisch Best Practices (non-root, layered JAR)
- io.fabric8:docker-maven-plugin und com.bmuschko.docker-remote-api entfallen

Entfernte Dateien: Dockerfile, .dockerignore, .maven-dockerexclude, .maven-dockerinclude

.dockerignore [deleted file]
.maven-dockerexclude [deleted file]
.maven-dockerinclude [deleted file]
Dockerfile [deleted file]
build.gradle
pom.xml

diff --git a/.dockerignore b/.dockerignore
deleted file mode 100644 (file)
index 6de8137..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-*
-!Dockerfile
-!target/*.jar
diff --git a/.maven-dockerexclude b/.maven-dockerexclude
deleted file mode 100644 (file)
index 72e8ffc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-*
diff --git a/.maven-dockerinclude b/.maven-dockerinclude
deleted file mode 100644 (file)
index fd6cecd..0000000
+++ /dev/null
@@ -1 +0,0 @@
-target/*.jar
diff --git a/Dockerfile b/Dockerfile
deleted file mode 100644 (file)
index 9e196ff..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-FROM eclipse-temurin:21-jre
-VOLUME /tmp
-COPY target/*.jar /opt/app.jar
-ENTRYPOINT [ "java", "-jar", "/opt/app.jar" ]
-CMD []
index f44d5d03270e33bd18a948039faa323c9bf08490..51613fb24f3a0480b967b2c4b11465bfae8186f1 100644 (file)
@@ -1,11 +1,8 @@
-import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage
-
 plugins {
        id 'java'
        id 'org.springframework.boot' version '4.0.2'
        id 'io.spring.dependency-management' version '1.1.7'
        id 'com.gorylenko.gradle-git-properties' version '2.4.2'
-       id 'com.bmuschko.docker-remote-api' version '9.3.3'
 }
 
 group = 'de.juplo.kafka'
@@ -55,35 +52,6 @@ springBoot {
        buildInfo()
 }
 
-docker {
-       // Optional: Konfiguriere den Docker-Host, falls nötig
-       // url = 'unix:///var/run/docker.sock' (Standard)
-}
-
-
-def targetDir = file("${projectDir}/target")
-def appJarName = "${project.name}-${project.version}.jar"
-
-// Task zum Bereinigen des `target`-Verzeichnisses bei `clean`
-clean {
-       delete targetDir
-}
-
-// Task zum Kopieren des Haupt-JARs
-task copyJar(type: Copy) {
-       from "$buildDir/libs/${appJarName}"
-       into targetDir
-       dependsOn build
-
-       doFirst {
-               def libs = file("${targetDir}/libs")
-               mkdir(libs)
-       }
-}
-
-// Docker-Task
-task buildDockerImage(type: DockerBuildImage) {
-       inputDir = file('.')
-       images = ["juplo/${project.name}:${project.version}"]
-       dependsOn copyJar
+bootBuildImage {
+       imageName = "juplo/${project.name}:${project.version}"
 }
diff --git a/pom.xml b/pom.xml
index ac72994e14111c1e9ccb5e534c7c2e2c31d1ee17..87daecb330289350990126ebf74a54c7934950ce 100644 (file)
--- a/pom.xml
+++ b/pom.xml
       <plugin>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
+        <configuration>
+          <image>
+            <name>juplo/${project.artifactId}:${project.version}</name>
+          </image>
+        </configuration>
         <executions>
           <execution>
             <goals>
         <groupId>pl.project13.maven</groupId>
         <artifactId>git-commit-id-plugin</artifactId>
       </plugin>
-      <plugin>
-        <groupId>io.fabric8</groupId>
-        <artifactId>docker-maven-plugin</artifactId>
-        <version>0.45.0</version>
-        <configuration>
-          <images>
-            <image>
-              <name>juplo/%a:%v</name>
-            </image>
-          </images>
-        </configuration>
-        <executions>
-          <execution>
-             <id>build</id>
-             <phase>package</phase>
-             <goals>
-               <goal>build</goal>
-             </goals>
-          </execution>
-        </executions>
-      </plugin>
     </plugins>
   </build>