Construyendo Imágenes Docker con Spring Boot Build Image


Por Martinez Henry


Resumen (TL;DR)

Spring Boot permite crear imágenes Docker con un solo comando sin necesidad de escribir un Dockerfile. En este artículo vemos cómo usar mvn spring-boot:build-image para generar una imagen lista para ejecutarse.


📑 Tabla de Contenido

  1. Introducción
  2. Entorno
  3. Construyendo la imagen Docker

Construyendo Imágenes Docker con Spring Boot Build Image

Seguramente han escuchado de Dockerfile para construir imágenes Docker, pero hoy me gustaría mostrarles una forma rápida de crear imágenes Docker para aplicaciones Spring Boot con solo ejecutar 1 comando.

Para esto tenemos un comando que nos proporciona el plugin spring-boot-maven-plugin, también usado para construir los archivos jar de nuestras aplicaciones Spring Boot.


Entorno

  • Maven
  • Docker
  • MacBook Pro
  • Java 11

Construyendo la Imagen Docker

Abre la terminal y posiciónate en la carpeta donde se encuentra tu archivo pom.xml. Luego ejecuta:

mvn spring-boot:build-image

Deberías ver un resultado similar a este:

[INFO]     [creator]     Paketo Executable JAR Buildpack 5.2.1
[INFO]     [creator]       https://github.com/paketo-buildpacks/executable-jar
[INFO]     [creator]       Class Path: Contributing to layer
[INFO]     [creator]       Process types:
[INFO]     [creator]         executable-jar: java org.springframework.boot.loader.JarLauncher (direct)
[INFO]     [creator]         web:            java org.springframework.boot.loader.JarLauncher (direct)
[INFO]     [creator]
[INFO]     [creator]     Paketo Spring Boot Buildpack 4.6.0
[INFO]     [creator]       Creating slices from layers index
[INFO]     [creator]         dependencies
[INFO]     [creator]         spring-boot-loader
[INFO]     [creator]         snapshot-dependencies
[INFO]     [creator]         application
[INFO]     [creator]     ===> EXPORTING
[INFO]     [creator]     Saving docker.io/library/lab-1:latest...
[INFO]     [creator]     *** Images (019302746a92):
[INFO]     [creator]           docker.io/library/lab-1:latest
[INFO]
[INFO] Successfully built image 'docker.io/library/lab-1:latest'
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  19.660 s
[INFO] Finished at: 2021-09-13T08:14:17-05:00
[INFO] ------------------------------------------------------------------------

Finalmente verificamos la imagen creada con:

docker images

Podemos ver la imagen recién creada:

lab-1                                    latest                  019302746a92   41 years ago    263MB
paketobuildpacks/builder                 base                    33f61a7d9dc3   41 years ago    779MB
hello-lab1                               1.0.0-SNAPSHOT          5ca785c91f5d   41 years ago    263MB

Cierre

spring-boot:build-image es una opción conveniente para equipos que quieren contenedores sin mantener un Dockerfile. Usa Buildpacks internamente, lo que garantiza imágenes seguras y optimizadas sin configuración adicional.


Referencias e Inspiraciones: