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: pass3. 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.ymlyapplication-prod.yml - Configura
Flywaypara 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.





