Cet article présente 3 techniques pour construire une image Docker d’une application SpringBoot avec Maven.
(1)Utiliser la fonctionnalité intégrée à spring-boot-maven-plugin build-image.
(2)Utiliser l’outil de Google jib-maven-plugin。
(3)Utiliser dockerfle-maven-plugin。
Application Spring Boot
Pour faciliter la mise en pratique, il faut un projet Spring Boot.
Adresse du projet de démonstration :
https://github.com/davelms/me...
Environnement du projet :
Java 11
Maven 3.6.3
Utiliser mvn package permet de construire normalement le fichier jar.
peut également fonctionner normalement :
java -jar target/demo-application-0.0.1-SNAPSHOT.jar
Page de test :
http://localhost:8080/hello

Le projet de démonstration est prêt ; passons maintenant à la mise en pratique des 3 méthodes de construction d’images.
I、build-image du plugin Maven de Spring Boot
Spring Boot intègre son propre plugin de construction d’images Docker. Nous n’avons aucune modification à effectuer, puisqu’il est déjà présent dans spring-boot-starter-parent dans pom.xml.
Vous n’avez pas besoin d’écrire de Dockerfile ni de vous soucier du reste : le plugin s’occupe de tout, notamment des questions de sécurité, de mémoire et de performances sur lesquelles Spring formule des recommandations.
Il suffit d’exécuter :
mvn spring-boot:build-image
Une fois l’exécution terminée, un message de réussite s’affiche :

Exécuter les tests du conteneur :
docker run -p 9090:8080 -t demo-application:0.0.1-SNAPSHOT
Remarque : le port local mappé ici est 9090。

II、jib-maven-plugin
Jib est un plugin Maven et Gradle qui permet de créer des images Docker.
Ce plugin présente une caractéristique très nette :Aucune installation locale de Docker nécessaire,ce qui est très pratique pour l’intégration continue : Jib peut pousser directement l’image vers le registre Docker indiqué.
Jib ne nécessite pas non plus d’écrire un Dockerfile.
Son utilisation est également très simple : il n’est pas nécessaire de modifier le code, et l’on peut aussi conserver pom.xml tel quel.
Il suffit d’exécuter :
mvn compile com.google.cloud.tools:jib-maven-plugin:2.3.0:dockerBuild
mvn compile
est la commande de compilation maven que nous connaissons bien.
com.google.cloud.tools:jib-maven-plugin:2.3.0
spécifie l’utilisation du plugin Jib
dockerBuild
est l’objectif d’exécution du plugin Jib,dockerBuild indique à Jib d’utiliser le Docker installé localement.
Une fois l’exécution terminée, un message de réussite s’affiche :

Lancer le conteneur pour le test :
docker run -p 9091:8080 -t demo-application:0.0.1-SNAPSHOT
Remarque : le port local mappé ici est 9091。

III、dockerfile-maven-plugin
Ce plugin exige que nous écrivions un Dockerfile ; celui-ci est déjà prêt dans le projet Domo.
Le Dockerfile doit être placé à la racine du projet, avec pom.xml.

Ensuite, il faut ajouter une configuration dans pom.xml afin de préciser le registre, le tag ainsi que ce qui a été défini dans le Dockerfile ci-dessus : JAR_FILE。

Exécuter mvn package déclenchera automatiquement la construction de l’image ; une fois l’exécution terminée, le message suivant s’affichera :

Exécuter le conteneur :
docker run -p 9092:8080 -t demo-application:0.0.1-SNAPSHOT
Attention : le port local mappé est 9092。

Bilan

Parmi ces 3 méthodes, la plus pratique est celle intégrée à SpringBoot : rien à réaliser soi-même, elle s’utilise directement.
Jib se distingue particulièrement : il ne nécessite pas l’installation locale de Docker, permet de pousser directement les images vers le registre choisi et reste très simple à utiliser.
Ce qui semble le plus fastidieux, c’est le plugin dockerfile-maven-plugin : il faut écrire un Dockerfile et ajouter de la configuration,Cependant,en réalité, c’est le plus pratique, car les 2 premiers dépendent de l’environnement réseau (vous voyez ce que je veux dire) ; même si vous configurez une image Docker, des erreurs se produiront. Vous pouvez essayer.
