Contexto

Cuando desarrollamos una aplicación que requiere utilizar servicios externos, como una base de datos, es necesario que el sistema donde se ejecuta tenga instaladas todas las dependencias necesarias. Es decir, para ejecutar un programa Java que utiliza una base de datos con MySQL, el usuario debe tener instalado Java y MySQL. Esto podría sonar obvio, pero en la práctica genera muchos problemas: diferentes versiones, configuraciones incompatibles o entornos mal preparados pueden hacer que una aplicación funcione en un ordenador pero falle en otro. Por eso, herramientas como Docker permiten empaquetar tanto la aplicación como sus dependencias en contenedores, asegurando que todo se ejecuta exactamente igual en cualquier sistema que tenga instalado Docker.

Objetivo

El objetivo de esta práctica es crear empaquetar una aplicación Java que utilice una base de datos administrada con MySQL para que pueda ser fácilmente compartida mediante Docker. Para ello, se utilizarán dos contenedores, uno para lanzar la aplicación Java y otro con MySQL. Se utilizará Docker Compose para lanzar los dos contenedores.

Requisitos previos

Es necesario tener instalado Java y Docker Engine, suponiendo que estemos en un entorno Linux. Asegúrate de tenerlo instalado antes de continuar. También se recomienda instalar el plugin Docker de nuestro IDE.

Además, para utilizar la API JDBC que permite a nuestro programa conectarse a la base de datos a través de MySQL, es necesario disponer de la librería descargable aquí seleccionado como sistema operativo “Platform Independent”. En esta práctica se ha utilizado la versión 9.3.0.

Esquema de la arquitectura prevista

El sistema está compuesto por dos contenedores Docker:

Ambos contenedores se definen y coordinan mediante un archivo docker-compose.yml.

Los ficheros que se van a crear son los siguientes:

<aside> 🚨

Todos los ficheros, así como la librería mysql-connector-j-9.3.0.jar deben estar alojados en el mismo directorio. Recuerda seleccionar “Platform independent” como sistema operativo.

</aside>

Guía paso a paso

Creación de los ficheros