SpringBoot + Docker





En este post intentare explicar los pasos que tienes que seguir para construir una imagen Docker y subirla a Docker Hub para ejecutar una aplicación SpringBoot.

Docker

Según su propia web, Docker en resumen, es una plataforma para desarrollar, implementar y ejecutar aplicaciones con contenedores.
Un contenedor ejecuta una imagen. ¿Y que es una imagen? Es un paquete ejecutable que incluye todo lo que se necesita para ejecutar una aplicación: el código, librerías, variables de entorno y archivos de configuración.

A container is a runtime instace of an image 

(Un contenedor es una instancia en tiempo de ejecución de una imagen)


DockerHub

Es un servicio cloud que tiene varias características:
  • Repositorios de imágenes
  • Builds automáticos
  • Webhooks
  • Organizaciones
  • Integración con GitHub y Bitbucket


En este post, lo que haremos será construir una imagen que subiremos al repositorio de imágenes de Docker Hub.

Para poder subir imágenes, debemos crearnos un Docker Id en DockerHub https://hub.docker.com/ 


Si quieres conocer mas en detalle Docker Hub te invito a consultar su documentación.

Para este ejemplo necesitamos:
  • Linux
  • JDK 1.8 o superior
  • Maven 3.2+
  • IDE favorito

1. Instalar Docker

La guía oficial de instalación la puedes ver en: https://docs.docker.com/install/
Para este post he usado Linux Mint Silvia 18.3 KDE 64-bit


2. Dockerfile

El Dockerfile, es un fichero que tenemos que crear en nuestro proyecto SpringBoot, este fichero define todo lo que necesitamos en nuestro contenedor, para este caso únicamente necesitamos Java y un Jar que es el fichero del proyecto.

3. Construir Imagen con Maven

Para construir la imagen de nuestro proyecto utilizaremos un plugin de Spotify que nos facilita esta creación (puedes consultar la documentación del plugin)


El repository tendrá el nombre de imagen que indiquemos en <configuration>..<repository>.. en este caso sera alsoft27/helloworlddocker

para construir la imagen ejecutamos:


$ mvn install dockerfile:build





4. Subir imagen a Docker Hub

Para subir la imagen, primero debemos crear un repositorio en Docker Hub



El nombre sera el artifactId tal como indicamos en el plugin de Maven (el nombre debe ser en minúsculas).

Una vez creado el repositorio, hacemos login en Docker Hub (ejecutar como root) y hacemos push de la imagen


$ sudo su

$ docker login
$ mvn dockerfile:push




El plugin de Spotify también nos permite subir la imagen automáticamente si deseamos, para eso agregamos la siguiente configuración al plugin  




5. Descargar y ejecutar

Como ya hemos subido la imagen al Docker Hub, la podemos descargar:

$ docker pull alsoft27/helloworlddocker






Para ejecutar:

$ docker run -p 8080:8080 -t alsoft27/helloworlddocker


La aplicación estará accesible en http://localhost:8080, para probar esta aplicación tenemos el endpoint http://localhost:8080/helloworld, la respuesta tiene que ser como se muestra en la imagen:





Si no subimos la imagen a Docker Hub podemos obviar el paso anterior y ejecutar la imagen en local.

Muchas gracias por leer el post y espero que les sirva de ayuda para iniciar en este mundo de los contenedores.

El código lo tenéis disponible en Github 

Algunos comandos de Docker

listar imágenes de Docker
$ docker image ls

listar contenedores
$ docker container ls

Detener contenedor
$ docker stop [container id]

Arrancar contenedor
$ docker start [container id]




Comentarios

Entradas populares de este blog

Estimar no debe ser un compromiso

Equipo

¿Por qué Scrum?