Questo articolo presenterà 3 tecniche per creare immagini Docker di applicazioni SpringBoot tramite Maven.
(1)Utilizzare la funzionalità integrata in spring-boot-maven-plugin build-image.
(2)Utilizzare quello di Google jib-maven-plugin。
(3)Usare dockerfle-maven-plugin。
Applicazione Spring Boot
Per facilitare la pratica, serve un progetto Spring Boot.
Indirizzo del progetto dimostrativo:
https://github.com/davelms/me...
Ambiente del progetto:
Java 11
Maven 3.6.3
Usare mvn package consente di compilare normalmente il pacchetto jar.
Può funzionare normalmente anche così:
java -jar target/demo-application-0.0.1-SNAPSHOT.jar
Pagina di test:
http://localhost:8080/hello

Il progetto demo è pronto; passiamo ora a mettere in pratica i 3 metodi per creare le immagini.
I、build-image del plugin Maven di Spring Boot
Spring Boot include già il proprio plugin per creare immagini Docker; non occorre apportare modifiche, perché è presente in spring-boot-starter-parent nel pom.xml.
Non devi scrivere un Dockerfile né preoccuparti di altro: il plugin fa tutto per te, occupandosi, per esempio, degli aspetti di sicurezza, memoria e prestazioni raccomandati da Spring.
Basta semplicemente eseguire:
mvn spring-boot:build-image
Al termine dell’esecuzione verrà visualizzato un messaggio di successo:

Esecuzione dei test del container:
docker run -p 9090:8080 -t demo-application:0.0.1-SNAPSHOT
Nota: la porta locale mappata qui è 9090。

II、jib-maven-plugin
Jib è un plugin per Maven e Gradle che serve a creare immagini Docker.
Questo plugin presenta una caratteristica molto evidente:Non è necessario installare Docker in locale,il che è molto comodo per l'integrazione continua;Jib può inviare direttamente l'immagine al repository Docker specificato.
Anche Jib permette di evitare la scrittura di un Dockerfile.
È anche molto comodo da usare: non occorre modificare il codice e si può persino lasciare invariato pom.xml.
Basta eseguire:
mvn compile com.google.cloud.tools:jib-maven-plugin:2.3.0:dockerBuild
mvn compile
è il comando di compilazione maven che conosciamo bene。
com.google.cloud.tools:jib-maven-plugin:2.3.0
Specifica l'utilizzo del plugin Jib
dockerBuild
è il goal di esecuzione del plugin Jib,dockerBuild specifica che Jib utilizza Docker installato localmente.
Al termine dell’esecuzione verrà visualizzato un messaggio di successo:

Avviare il container per il test:
docker run -p 9091:8080 -t demo-application:0.0.1-SNAPSHOT
Nota: la porta locale mappata qui è 9091。

III、dockerfile-maven-plugin
Questo plugin richiede la scrittura di un Dockerfile, già predisposto nel progetto Domo.
Il Dockerfile deve trovarsi nella directory radice del progetto, insieme a pom.xml.

Poi, occorre aggiungere alcune configurazioni in pom.xml per specificare il repository, il tag e quanto definito nel Dockerfile precedente, ovvero JAR_FILE。

Eseguire mvn package verrà creata automaticamente l'immagine; al termine dell'esecuzione apparirà il messaggio seguente:

Eseguire il container:
docker run -p 9092:8080 -t demo-application:0.0.1-SNAPSHOT
Nota: la porta locale mappata è 9092。

Riepilogo

Fra questi 3 metodi, il più comodo è quello nativo di SpringBoot: non occorre fare nulla da sé, si può usare direttamente.
Il più particolare è Jib: non richiede l'installazione locale di Docker, può inviare direttamente le immagini al registro specificato ed è anche molto semplice da usare。
A quanto pare, il più complicato è proprio il plugin dockerfile-maven-plugin: bisogna scrivere un Dockerfile e aggiungere anche la configurazione,Tuttavia,in realtà è quello più comodo da usare, perché i primi 2 dipendono dall'ambiente di rete (ci siamo capiti); anche configurando un mirror Docker, si verificano comunque errori: puoi provare。
