Dockerizando springboot y publicando en AWS - Parte 1

Fabian Zamudio

En los últimos años fuimos espectadores de una transformación en la forma en que los sistemas web eran diseñados a nivel de arquitectura. Hace relativamente pocos años era suficiente con tener nuestra aplicación en una maquina virtual privada.

Con la llegada de los sistemas en la nube y la oferta que estas traen como es el caso de AWS con todas sus herramientas hoy es muy fácil olvidar esos viejos enfoques y orientarnos a los sistemas distribuidos. Hoy veremos como preparar nuestra aplicación con Springboot para ser dockerizado y en una próxima entrega hablaremos de como subir la misma a AWS. 

 

¿Por qué Docker?

Asumo que si estas leyendo este post sabes que es Docker pero me gustaría detenerme brevemente y explicar las ventajas que nos aporta. En principio como es su objetivo principal nos permite distribuir de una forma muy sencilla nuestra aplicación gracias a repositorios como Docker Hub o ECR, al mismo tiempo que con sus tags no habilita a versionar la solución y ser usada según los distintos ambientes (producción, staging,  desarrollo, etc).

Abstraernos y estar seguro de que nuestro solución contiene todos los requerimientos nos da la libertad de cambiar el proveedor y no afectar a nuestro producto (si es que esta bien diseñada). Podríamos seguir enumerando las ventajas pero creo que ya se demostró los argumentos de nuestra elección.

 

Iniciando nuestra aplicación

Usaremos en esta ocasión Spring Initializr para facilitar nuestro bootstrap. En la siguiente imagen podrán ver mi configuración inicial (obviaremos la sección de paquetes ya que me parece irrelevante para esta primer etapa).

 

 

Configurando lo que hay que configurar…

En el 90% de los casos no deberemos hacer muchos cambios a como les mostrare y queda a responsabilidad del lector si es que es parte de ese 10% (pero siéntete libre de contactarme y veremos si puedo ser de ayuda). En mi caso opte por el uso de la versión de Java 11 ofrecida por AWS llamada Amazon Corretto 11 ya que tiene la ventaja de ser LTS y mantenida por el mismo Amazon. 

Dejando de lado la aclaración anterior comenzaremos con la configuración.

En primer lugar deberemos crear en la raíz de nuestro proyecto el archivo Dockerfile (es importante llamarlo de esta manera ya que es donde Docker lo buscara). 

Dockerfile

FROM amazoncorretto:11
VOLUME /tmp
COPY build/libs/*.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

 

Con el archivo creado solamente nos queda compilar la solución y dejarla disponible para que Docker haga su magia. Para esto usaremos el siguiente comando.

gradlew build && docker build -t spring-boot-docker-aws .

 

En próximos post mejoraremos los comandos y seguiremos nuestro camino hasta lograr tener nuestra aplicación sobre la infraestructura de AWS. Podrás ver el proyecto y seguir cada cambio que realice en mi repositorio github.com/zamudio-fabian/spring-boot-docker-aws

  • docker
  • aws
  • springboot
  • spring boot
  • java
  • aws
  • amazon
WRITTEN BY

Software Developer. Follow me: LinkedIn @fabian-zamudio-dev | Github @zamudio-fabian | Twitter @fabian_zamudio