Curso de Spring Boot
Una vez que nuestra aplicación funciona, debemos publicarla en un servidor para que otras personas puedan usarla.
Este proceso se llama despliegue (deployment).
En este capítulo veremos:
- generar el archivo ejecutable
- ejecutar la aplicación en un servidor
- usar Docker
- desplegar en plataformas cloud
19.1 Crear archivo ejecutable (JAR)
Spring Boot permite generar un archivo JAR ejecutable.
Esto significa que la aplicación incluye:
- servidor web
- dependencias
- configuración
Generar el JAR
En la terminal del proyecto:
1mvn clean package
Esto genera el archivo:
1target/app.jar
19.2 Ejecutar la aplicación
Para ejecutar el JAR:
1java -jar target/app.jar
La aplicación arrancará.
Ejemplo en consola:
1Tomcat started on port 8080 2Started Application
Ahora la API estará disponible en:
1http://localhost:8080
19.3 Ejecutar en servidor Linux
Supongamos un servidor Linux.
Pasos:
1 subir el archivo
1scp target/app.jar usuario@servidor:/home/app
2 ejecutar aplicación
1java -jar app.jar
19.4 Ejecutar en segundo plano
Para que el servidor no se detenga al cerrar la terminal:
1nohup java -jar app.jar &
19.5 Ejecutar como servicio
En servidores Linux es común usar systemd.
Crear servicio
Archivo:
1/etc/systemd/system/app.service
Ejemplo
1[Unit] 2Description=Spring Boot App 3After=network.target 4 5[Service] 6User=ubuntu 7ExecStart=/usr/bin/java -jar /home/app/app.jar 8SuccessExitStatus=143 9 10[Install] 11WantedBy=multi-user.target
Activar servicio
1systemctl start app 2systemctl enable app
19.6 Usar Docker
Docker permite ejecutar la aplicación en un contenedor aislado.
Ventajas:
- portabilidad
- facilidad de despliegue
- mismo entorno en todos los servidores
19.7 Crear Dockerfile
Archivo:
1Dockerfile
Ejemplo
1FROM openjdk:21-jdk 2 3COPY target/app.jar app.jar 4 5ENTRYPOINT ["java","-jar","/app.jar"]
19.8 Crear imagen Docker
1docker build -t spring-app .
19.9 Ejecutar contenedor
1docker run -p 8080:8080 spring-app
Ahora la aplicación está disponible en:
1http://localhost:8080
19.10 Despliegue en Railway
Railway es una plataforma sencilla para desplegar aplicaciones.
Pasos:
1 crear cuenta en Railway 2 subir proyecto a GitHub 3 conectar repositorio 4 Railway detecta Spring Boot automáticamente
La aplicación se desplegará automáticamente.
19.11 Despliegue en Render
Otra plataforma popular es Render.
Pasos:
1 crear cuenta 2 conectar repositorio 3 elegir tipo Web Service 4 configurar comando:
1java -jar app.jar
19.12 Despliegue en VPS
También podemos usar un servidor propio.
Ejemplo:
1DigitalOcean 2AWS EC2 3Hetzner 4OVH
Pasos:
1 crear servidor Linux 2 instalar Java 3 subir JAR 4 ejecutar aplicación
19.13 Usar base de datos remota
En producción normalmente usamos bases de datos externas.
Ejemplos:
1PostgreSQL 2MySQL 3MongoDB
Configuración:
1spring.datasource.url=jdbc:postgresql://host:5432/db 2spring.datasource.username=user 3spring.datasource.password=password
19.14 Variables de entorno en producción
Nunca guardar contraseñas en el código.
Ejemplo:
1spring.datasource.password=${DB_PASSWORD}
El servidor definirá:
1export DB_PASSWORD=1234
19.15 Configuración de puerto
Algunas plataformas usan puertos dinámicos.
Ejemplo:
1server.port=${PORT:8080}
19.16 Arquitectura de producción típica
1Internet 2 ↓ 3Load Balancer 4 ↓ 5Spring Boot App 6 ↓ 7Database
En aplicaciones grandes puede haber múltiples instancias.
19.17 Monitorización
En producción es importante monitorizar la aplicación.
Herramientas comunes:
1Prometheus 2Grafana 3ELK Stack
También se puede usar Spring Boot Actuator.
19.18 Spring Boot Actuator
Añadir dependencia:
1<dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-actuator</artifactId> 4</dependency>
Endpoint útil
1/actuator/health
Devuelve estado del servidor.
Ejemplo:
1{ 2 "status": "UP" 3}
- Loading...