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.
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.
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.
El sistema está compuesto por dos contenedores Docker:
eclipse-temurin, que intenta conectarse a una base de datos MySQL y mostrar un mensaje si lo consigue.mysql:latest), configurado con usuario, contraseña y base de datos predeterminados, y carga automáticamente un script SQL al iniciar.Ambos contenedores se definen y coordinan mediante un archivo docker-compose.yml.
Los ficheros que se van a crear son los siguientes:
Main.java: programa en Java que se conectará a una base de datos.academia.sql: definición de las tablas que componen la base de datos que se utilizará.Dockerfile: fichero para la creación del contenedor que compilará y ejecutará el programa Java.docker-compose.yml: coordinación para el lanzamiento del contenedor con el programa Java y el contenedor con MySQL.<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>