Dockerizando una app Spring Boot

Docker es una tecnología fabulosa que nos permite llevar de la mano software e infraestructura. Cuando pensamos en Java y la JVM siempre nos viene a la mente una de las características que lo ha hecho más popular que es: cross-platform.

Lo cierto es que este concepto es muy relativo … pues sí. Recientemente estuve trabajando en un proyecto en mi local con Java 11 y cuando fui a producción lo que teníamos era Java 8, resulta que tuve que hacer cambios en Optional (Java 8 vs Java 11). Algo similar me paso con String, en Java 11 pusieron isBlank, que no está en Java 8. Esto no es una crítica a Java, es un símbolo de evolución, malo sería que hacia adelante no funcionara.

El punto al que quiero llegar, es que sino seguimos unas pautas para desarrollar en ambientes homogeneos a los de producción pueden llegar a surgir algunos problemas,»o no».

Para que no tengamos el problema: docker

Como referí en la introducción docker permite llevar de la mano el software y la infraestructura, entiéndase por esto último para un proyecto Java (el sistema operativo base + JDK + app).

Para dockerizar un proyecto Spring Boot, o Java con servidor de aplicaciones autocontenido solo basta con las siguientes líneas agregadas en fichero de nombre Dockerfile. La ruta de la variable JAR_FILE es relativa a donde está el Dockerfile.

FROM openjdk:8-jdk-alpine
VOLUME /tmp
EXPOSE 8080
ARG JAR_FILE=target/dockerbasico-0.0.1-SNAPSHOT.jar
ADD ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

La primera línea nos da un sistema operativo Linux Alpine basado en busybox (muy poco size) y ese Linux ya viene con JDK 8. Las siguientes líneas lo que hacen es ponerle arriba nuestra app Spring Boot que la buscamos en la carpeta /target.

Al final para construir nuestra imagen de docker, solo nos basta con ejecutar:

docker build -t midocker .

El . es porque lo hacemos parados en donde está el fichero Dockerfile y midocker es el nombre que le vamos a poner al contenedor.

Ese contenedor creado lo podemos colocar en un registry o llevar a cualquier lugar para ponerlo en producción, sin preocupación alguna del sistema operativo o infraestructura donde se va a ejecutar.

Si quieres ver el ejemplo completo puedes visitar GitHub.

En este vídeo de acá te explicamos todos los conceptos y pasos más detallados.

Espero te se útil este artículo.

Un comentario en «Dockerizando una app Spring Boot»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

SACAViX Tech