Desplegando una API REST con Spring Boot y Docker

Software developing

El desarrollo de APIs REST es una práctica habitual en proyectos backend modernos. Spring Boot facilita enormemente esta tarea, ofreciendo una estructura clara, integración con librerías populares y soporte para perfiles de entorno. En este artículo aprenderás a crear una API REST sencilla con Spring Boot y desplegarla usando Docker. Este enfoque garantiza portabilidad, repetibilidad y facilidad de despliegue en cualquier entorno.

1. Crear el proyecto con Spring Boot

Puedes usar Spring Initializr para generar la estructura básica. Selecciona:

  • Project: Maven
  • Language: Java
  • Dependencies: Spring Web, Spring Data JPA, PostgreSQL Driver

Una vez generado el proyecto, añade una entidad y un controlador REST básico:

@Entity
public class Task {
    @Id @GeneratedValue
    private Long id;
    private String title;
    private boolean completed;
    // getters y setters
}

@RestController
@RequestMapping("/tasks")
public class TaskController {
    @Autowired
    private TaskRepository repository;

    @GetMapping
    public List<Task> getAll() {
        return repository.findAll();
    }
}

2. Configurar Docker

Para contenerizar la aplicación, crea un Dockerfile:

FROM openjdk:17-jdk-slim
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

Y un docker-compose.yml para levantar la app y PostgreSQL:

version: '3.8'
services:
  db:
    image: postgres:15
    environment:
      POSTGRES_DB: tasks
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
    ports:
      - "5432:5432"
  app:
    build: .
    ports:
      - "8080:8080"
    depends_on:
      - db
    environment:
      SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/tasks
      SPRING_DATASOURCE_USERNAME: user
      SPRING_DATASOURCE_PASSWORD: pass

3. Probar el entorno local

Ejecuta docker-compose up --build. Accede a http://localhost:8080/tasks para probar el endpoint. Puedes usar Postman o curl para hacer peticiones GET, POST, etc.

4. Consideraciones para producción

  • Usa perfiles application-dev.yml y application-prod.yml
  • Configura Flyway para la gestión de esquemas
  • Agrega logging estructurado y gestión de errores global
  • Usa imágenes base más ligeras (Alpine)

Con esta configuración tienes un entorno de desarrollo y despliegue básico listo para crecer.

Compartir
Facebook
Twitter
Email
Imprimir

Contacto

¿Tienes alguna duda, propuesta o simplemente quieres saludar? Estoy encantado de leerte.