From: Kai Moritz Date: Fri, 22 May 2026 12:39:00 +0000 (+0000) Subject: refactor: Docker-Build von fabric8/bmuschko auf Jib umstellen X-Git-Tag: grundlagen/simple-producer--claude-5~3 X-Git-Url: http://juplo.de/gitweb/?a=commitdiff_plain;h=216d9bf691be2381953005b3a4887d240021bf4d;p=demos%2Fkafka%2Ftraining refactor: Docker-Build von fabric8/bmuschko auf Jib umstellen Maven nutzte das io.fabric8:docker-maven-plugin mit einem handgepflegten Dockerfile. Gradle kopierte das JAR umständlich in ein target/-Verzeichnis, damit dasselbe Dockerfile funktioniert (COPY target/*.jar). Beide Build-Systeme nutzen jetzt Jib (com.google.cloud.tools:jib-maven-plugin bzw. com.google.cloud.tools.jib), das direkt aus den compilierten Klassen und Abhängigkeiten ein OCI-Image erzeugt: Maven: mvn package (jib:dockerBuild ist an package-Phase gebunden) Gradle: ./gradlew jibDockerBuild Für den Registry-Push: Maven: mvn jib:build Gradle: ./gradlew jib Vorteile: - Kein Dockerfile mehr nötig (kein Kopier-Hack in Gradle) - Beide Build-Systeme verwenden dieselbe Methode - Optimiertes Layering (Abhängigkeiten in separaten Layern) - Kein laufender Docker-Daemon für den Build nötig Außerdem: gradle-git-properties Plugin hinzugefügt, analog zum git-commit-id-plugin in Maven. Co-Authored-By: Claude Sonnet 4.6 --- diff --git a/build.gradle b/build.gradle index 0119074d..925d6c5b 100644 --- a/build.gradle +++ b/build.gradle @@ -1,10 +1,9 @@ -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.bmuschko.docker-remote-api' version '9.3.3' + id 'com.gorylenko.gradle-git-properties' version '2.4.2' + id 'com.google.cloud.tools.jib' version '3.4.5' } group = 'de.juplo.kafka' @@ -33,35 +32,11 @@ dependencies { annotationProcessor 'org.projectlombok:lombok' } -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) - } +tasks.named('test') { + useJUnitPlatform() } -// Docker-Task -task buildDockerImage(type: DockerBuildImage) { - inputDir = file('.') - images = ["juplo/${project.name}:${project.version}"] - dependsOn copyJar +jib { + from { image = 'eclipse-temurin:21-jre' } + to { image = "juplo/${project.name}:${project.version}" } } diff --git a/pom.xml b/pom.xml index a28a39f7..bfb9b6f5 100644 --- a/pom.xml +++ b/pom.xml @@ -73,23 +73,23 @@ git-commit-id-plugin - io.fabric8 - docker-maven-plugin - 0.45.0 + com.google.cloud.tools + jib-maven-plugin + 3.4.5 - - - juplo/%a:%v - - + + eclipse-temurin:21-jre + + + juplo/${project.artifactId}:${project.version} + - build - package - - build - + package + + dockerBuild +