Este artículo presenta 3 técnicas para crear imágenes de Docker de aplicaciones SpringBoot mediante Maven.
(1)Utilizar la función integrada de spring-boot-maven-plugin build-image.
(2)Usar el de Google jib-maven-plugin。
(3)Utilizar dockerfle-maven-plugin。
Aplicación Spring Boot
Para facilitar la práctica, necesitamos un proyecto de Spring Boot.
Dirección del proyecto de demostración:
https://github.com/davelms/me...
Entorno del proyecto:
Java 11
Maven 3.6.3
Usar mvn package se puede compilar el paquete jar correctamente.
También puede ejecutarse con normalidad:
java -jar target/demo-application-0.0.1-SNAPSHOT.jar
Página de prueba:
http://localhost:8080/hello

El proyecto de demostración ya está listo; a continuación pondremos en práctica los 3 métodos para construir imágenes.
I、build-image del plugin Maven de Spring Boot
Spring Boot incluye su propio complemento para construir imágenes de Docker; no necesitamos realizar ningún cambio, ya que está en spring-boot-starter-parent, en pom.xml.
No necesitas escribir un Dockerfile ni preocuparte por nada más: el complemento lo hace todo por ti, incluidas cuestiones como la seguridad, la memoria y el rendimiento que recomienda Spring.
Solo hay que ejecutar lo siguiente:
mvn spring-boot:build-image
Al finalizar la ejecución aparecerá un mensaje de éxito:

Ejecutar el contenedor para probarlo:
docker run -p 9090:8080 -t demo-application:0.0.1-SNAPSHOT
Nota: el puerto local mapeado aquí es 9090。

II、jib-maven-plugin
Jib es un complemento para Maven y Gradle que permite crear imágenes de Docker.
Este complemento tiene una característica muy evidente:No requiere instalar Docker en local,lo cual resulta muy práctico para la integración continua: Jib puede enviar directamente las imágenes al repositorio Docker especificado.
Jib tampoco requiere escribir un Dockerfile.
También es muy fácil de usar: no hace falta modificar el código y se puede prescindir de cambios en pom.xml.
Solo hay que ejecutar:
mvn compile com.google.cloud.tools:jib-maven-plugin:2.3.0:dockerBuild
mvn compile
es el comando de compilación de maven que tan bien conocemos.
com.google.cloud.tools:jib-maven-plugin:2.3.0
Especifica el uso del complemento Jib
dockerBuild
es el objetivo de ejecución del complemento Jib,dockerBuild especifica que Jib utilice el Docker instalado localmente.
Al finalizar la ejecución aparecerá un mensaje de éxito:

Iniciar el contenedor para la prueba:
docker run -p 9091:8080 -t demo-application:0.0.1-SNAPSHOT
Nota: el puerto local mapeado aquí es 9091。

III、dockerfile-maven-plugin
Este complemento requiere que escribamos un Dockerfile, que ya está preparado en el proyecto Domo.
El Dockerfile debe colocarse en el directorio raíz del proyecto, junto a pom.xml.

Después, hay que añadir cierta configuración a pom.xml para especificar el repositorio, la etiqueta tag y lo definido en el Dockerfile anterior: JAR_FILE。

Ejecutar mvn package se construirá automáticamente la imagen y, una vez finalizada la ejecución, aparecerá el siguiente mensaje:

Ejecutar el contenedor:
docker run -p 9092:8080 -t demo-application:0.0.1-SNAPSHOT
Nota: el puerto local asignado es 9092。

Resumen

De estas 3 opciones, la más cómoda es la nativa de SpringBoot: no necesitas hacer nada por tu cuenta y puedes usarla directamente。
La herramienta más singular es Jib:no requiere instalar Docker localmente, permite enviar la imagen directamente al repositorio indicado y, además, es muy fácil de usar.
El complemento que parece más engorroso es dockerfile-maven-plugin: requiere escribir un Dockerfile y añadir configuración,Pero,en realidad es el más práctico, porque los 2 anteriores dependen del entorno de red (ya sabes), e incluso si configuras una imagen de Docker, se producirán errores; puedes probarlo.
