Ir al contenido principal

Buscar en CooLWJ

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

Idioma

Las 3 mejores formas de crear imágenes Docker con SpringBoot

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:

image

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.

Imagen temática sobre Spring Boot, Maven y la construcción de imágenes Docker


Comentarios

Enviando

Elige tu tema

El tema se aplica a todo el sitio.