Introducción

Docker es una plataforma que permite a los desarrolladores empaquetar aplicaciones y sus dependencias en contenedores, asegurando que la aplicación se ejecute de manera consistente en cualquier entorno. En esta sección, aprenderemos cómo crear una imagen Docker para una aplicación Spring Boot y cómo ejecutar esa imagen en un contenedor Docker.

Requisitos Previos

Antes de comenzar, asegúrate de tener instalados los siguientes componentes en tu sistema:

  • Docker: Puedes descargarlo e instalarlo desde aquí.
  • Java Development Kit (JDK): Asegúrate de tener JDK 8 o superior.
  • Maven: Para construir tu aplicación Spring Boot.

Paso 1: Crear una Aplicación Spring Boot

Primero, vamos a crear una aplicación Spring Boot simple. Si ya tienes una aplicación, puedes usarla directamente.

Estructura del Proyecto

spring-boot-docker/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/
│   │   │       └── example/
│   │   │           └── demo/
│   │   │               └── DemoApplication.java
│   │   └── resources/
│   │       └── application.properties
├── .gitignore
├── Dockerfile
├── mvnw
├── mvnw.cmd
├── pom.xml
└── README.md

Código de la Aplicación

DemoApplication.java

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

@RestController
class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello, Docker!";
    }
}

application.properties

# Archivo de configuración vacío

Paso 2: Crear un Dockerfile

El Dockerfile es un archivo de texto que contiene todas las instrucciones necesarias para construir una imagen Docker de tu aplicación.

Dockerfile

# Usar una imagen base de Java
FROM openjdk:11-jre-slim

# Establecer el directorio de trabajo dentro del contenedor
WORKDIR /app

# Copiar el archivo JAR de la aplicación al contenedor
COPY target/demo-0.0.1-SNAPSHOT.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"]

Paso 3: Construir la Aplicación

Antes de construir la imagen Docker, necesitamos construir el archivo JAR de nuestra aplicación.

./mvnw clean package

Este comando generará un archivo JAR en el directorio target.

Paso 4: Construir la Imagen Docker

Usa el siguiente comando para construir la imagen Docker:

docker build -t spring-boot-docker-demo .

Este comando construirá la imagen y la etiquetará como spring-boot-docker-demo.

Paso 5: Ejecutar el Contenedor Docker

Una vez que la imagen Docker esté construida, puedes ejecutar un contenedor usando el siguiente comando:

docker run -p 8080:8080 spring-boot-docker-demo

Este comando ejecutará el contenedor y mapeará el puerto 8080 del contenedor al puerto 8080 de tu máquina local.

Verificar la Aplicación

Abre tu navegador web y navega a http://localhost:8080/hello. Deberías ver el mensaje "Hello, Docker!".

Ejercicio Práctico

Ejercicio 1: Modificar el Mensaje de Bienvenida

  1. Modifica el mensaje de bienvenida en HelloController para que diga "Hello, Docker World!".
  2. Reconstruye el archivo JAR de la aplicación.
  3. Reconstruye la imagen Docker.
  4. Ejecuta el contenedor Docker y verifica el cambio en tu navegador.

Solución

  1. Modifica HelloController:
@RestController
class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello, Docker World!";
    }
}
  1. Reconstruye el archivo JAR:
./mvnw clean package
  1. Reconstruye la imagen Docker:
docker build -t spring-boot-docker-demo .
  1. Ejecuta el contenedor Docker:
docker run -p 8080:8080 spring-boot-docker-demo
  1. Verifica en http://localhost:8080/hello.

Conclusión

En esta sección, hemos aprendido cómo empaquetar una aplicación Spring Boot en un contenedor Docker. Hemos cubierto desde la creación de un Dockerfile hasta la construcción y ejecución de la imagen Docker. Docker facilita la implementación y ejecución de aplicaciones en diferentes entornos de manera consistente. En el siguiente módulo, exploraremos cómo Spring Boot puede integrarse con microservicios.

Curso de Spring Boot

Módulo 1: Introducción a Spring Boot

Módulo 2: Conceptos Básicos de Spring Boot

Módulo 3: Construyendo Servicios Web RESTful

Módulo 4: Acceso a Datos con Spring Boot

Módulo 5: Seguridad en Spring Boot

Módulo 6: Pruebas en Spring Boot

Módulo 7: Funciones Avanzadas de Spring Boot

Módulo 8: Despliegue de Aplicaciones Spring Boot

Módulo 9: Rendimiento y Monitoreo

Módulo 10: Mejores Prácticas y Consejos

© Copyright 2024. Todos los derechos reservados