Antes de comenzar, asegúrate de tener instalados los siguientes componentes:
1. Java Development Kit (JDK)
2. Maven (o Gradle, dependiendo de tu proyecto)
3. Docker
Para verificar la instalación de Docker, puedes ejecutar el siguiente comando en tu terminal:
docker --version
Si ya tienes una aplicación Spring Boot, puedes saltarte este paso. De lo contrario, puedes crear una aplicación Spring Boot básica usando Spring Initializr o cualquier otra herramienta.
Puedes generar una aplicación Spring Boot básica desde Spring Initializr, seleccionando las siguientes opciones:
Descarga el proyecto y descomprímelo en tu máquina local.
El Dockerfile
es un archivo de texto que contiene todas las instrucciones para construir una imagen Docker de tu aplicación. Crea un archivo llamado Dockerfile
en el directorio raíz de tu proyecto y agrega el siguiente contenido:
# Usar una imagen base de JDK de Amazon Corretto
FROM amazoncorretto:17-alpine-jdk
# Establecer el directorio de trabajo
WORKDIR /app
# Copiar el archivo JAR generado en el contenedor
COPY target/*.jar app.jar
# Exponer el puerto en el que la aplicación se ejecutará
EXPOSE 8080
# Comando para ejecutar la aplicación
ENTRYPOINT ["java", "-jar", "app.jar"]
Para que Docker pueda copiar el archivo JAR de tu aplicación, primero necesitas construir tu proyecto de Spring Boot usando Maven o Gradle.
Ejecuta el siguiente comando en el directorio raíz de tu proyecto:
mvn clean package
Esto generará un archivo JAR en el directorio target
.
Con el Dockerfile
listo y el archivo JAR generado, ahora puedes construir la imagen Docker.
Ejecuta el siguiente comando en el directorio raíz de tu proyecto:
docker build -t springboot-app .
Este comando construye la imagen Docker y le asigna la etiqueta springboot-app
.
Una vez que la imagen Docker está construida, puedes ejecutar un contenedor basado en esta imagen.
Ejecuta el siguiente comando:
docker run -p 8080:8080 springboot-app
Este comando inicia un contenedor desde la imagen springboot-app
y mapea el puerto 8080 del contenedor al puerto 8080 de tu máquina host.
Abre un navegador web y navega a http://localhost:8080
. Deberías ver la aplicación Spring Boot en funcionamiento.
Para gestionar aplicaciones más complejas que dependen de múltiples servicios (como una base de datos), Docker Compose es una herramienta muy útil.
Crea un archivo docker-compose.yml
en el directorio raíz de tu proyecto:
version: '3'
services:
springboot-app:
image: springboot-app
build: .
ports:
- "8080:8080"
depends_on:
- db
db:
image: postgres:13
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydatabase
ports:
- "5432:5432"
Para iniciar los servicios definidos en el archivo docker-compose.yml
, ejecuta:
docker-compose up --build
Dockerizar una aplicación Spring Boot simplifica significativamente el proceso de despliegue y gestión de entornos. Al seguir los pasos descritos en esta guía, puedes crear imágenes Docker de tu aplicación y ejecutarlas en contenedores, asegurando un entorno consistente y reproducible tanto en desarrollo como en producción.
Esta guía proporciona una base sólida para dockerizar aplicaciones Spring Boot. Sin embargo, cada aplicación puede tener requisitos específicos adicionales, como configuraciones de red, volúmenes de datos persistentes o variables de entorno, que pueden ajustarse en el Dockerfile
o en los archivos de configuración de Docker Compose.
Jorge García
Fullstack developer