Volver a la página principal
domingo 14 julio 2024
422

Cómo dockerizar una aplicación Springboot

1. Preparativos Iniciales

Requisitos Previos

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

2. Crear una Aplicación Spring Boot

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.

Usando Spring Initializr

Puedes generar una aplicación Spring Boot básica desde Spring Initializr, seleccionando las siguientes opciones:

  • Project: Maven Project
  • Language: Java
  • Spring Boot: 3.0.0 (u otra versión estable)
  • Packaging: Jar
  • Java: 17 (u otra versión compatible)
  • Dependencias: Spring Web

Descarga el proyecto y descomprímelo en tu máquina local.

3. Crear un Archivo Dockerfile

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"]

4. Construir el Proyecto

Para que Docker pueda copiar el archivo JAR de tu aplicación, primero necesitas construir tu proyecto de Spring Boot usando Maven o Gradle.

Usando Maven

Ejecuta el siguiente comando en el directorio raíz de tu proyecto:

mvn clean package

Esto generará un archivo JAR en el directorio target.

5. Construir la Imagen Docker

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.

6. Ejecutar el Contenedor Docker

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.

7. Verificar la Aplicación

Abre un navegador web y navega a http://localhost:8080. Deberías ver la aplicación Spring Boot en funcionamiento.

8. Opcional: Usar Docker Compose

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

9. Conclusión

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.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer