Vai al contenuto principale

Cerca su CooLWJ

选择搜索范围,输入关键词后按回车。

Lingua

I 3 modi migliori per creare immagini Docker con SpringBoot

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:

immagine

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。

Immagine sul tema della creazione di immagini Docker con Spring Boot e Maven


Commenti

Invio in corso

Scegli il tema

Il tema si applica a tutto il sito.