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
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.
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:
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:
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
- Modifica el mensaje de bienvenida en
HelloController
para que diga "Hello, Docker World!". - Reconstruye el archivo JAR de la aplicación.
- Reconstruye la imagen Docker.
- Ejecuta el contenedor Docker y verifica el cambio en tu navegador.
Solución
- Modifica
HelloController
:
@RestController class HelloController { @GetMapping("/hello") public String hello() { return "Hello, Docker World!"; } }
- Reconstruye el archivo JAR:
- Reconstruye la imagen Docker:
- Ejecuta el contenedor Docker:
- 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
- ¿Qué es Spring Boot?
- Configuración de tu Entorno de Desarrollo
- Creando tu Primera Aplicación Spring Boot
- Entendiendo la Estructura del Proyecto Spring Boot
Módulo 2: Conceptos Básicos de Spring Boot
- Anotaciones de Spring Boot
- Inyección de Dependencias en Spring Boot
- Configuración de Spring Boot
- Propiedades de Spring Boot
Módulo 3: Construyendo Servicios Web RESTful
- Introducción a los Servicios Web RESTful
- Creando Controladores REST
- Manejo de Métodos HTTP
- Manejo de Excepciones en REST
Módulo 4: Acceso a Datos con Spring Boot
- Introducción a Spring Data JPA
- Configuración de Fuentes de Datos
- Creación de Entidades JPA
- Uso de Repositorios de Spring Data
- Métodos de Consulta en Spring Data JPA
Módulo 5: Seguridad en Spring Boot
- Introducción a Spring Security
- Configuración de Spring Security
- Autenticación y Autorización de Usuarios
- Implementación de Autenticación JWT
Módulo 6: Pruebas en Spring Boot
- Introducción a las Pruebas
- Pruebas Unitarias con JUnit
- Pruebas de Integración
- Simulación con Mockito
Módulo 7: Funciones Avanzadas de Spring Boot
Módulo 8: Despliegue de Aplicaciones Spring Boot
Módulo 9: Rendimiento y Monitoreo
- Ajuste de Rendimiento
- Monitoreo con Spring Boot Actuator
- Uso de Prometheus y Grafana
- Gestión de Registros y Logs