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
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:
- Spring. Spring Boot Maven Plugin — build-image. docs.spring.io
- Paketo Buildpacks. paketo.io