Luis Hernando Sarmiento Garzón
Muy buen curso, excelente primero entendiendo lo básico en el curso de Spring, considero que a la ruta de Java le falta un curso para el tema de test unitarios con Spring.
Llevar tu API de Spring Boot a producción con Render y Docker es el paso que convierte tu proyecto local en un servicio real disponible en Internet. Aquí aprenderás cómo construir un Dockerfile multi-stage, ajustar la configuración de tu base de datos PostgreSQL y publicar tu aplicación en la capa gratuita de Render, ideal para desarrolladores backend que quieren ver su API corriendo públicamente.
¿Cómo se construye un Dockerfile multi-stage para Spring Boot?
Un Dockerfile funciona como una receta: le dice a Docker cómo construir la imagen de tu aplicación. En este caso usamos dos etapas para optimizar el resultado final [01:00].
¿Qué hace la etapa de compilación?
La primera etapa se encarga de generar el JAR ejecutable. Aquí los puntos clave:
gradle:8.14.2-jdk21, la misma versión que aparece en gradle/wrapper/gradle-wrapper.properties de tu proyecto local./app, que será el contexto de ejecución.gradle bootJar --no-daemon, equivalente a correr la tarea bootJar desde tu IDE pero desde la línea de comandos [01:30].Es importante alinear la versión de Gradle con la del wrapper para evitar incompatibilidades al construir.
¿Qué hace la etapa de ejecución?
La segunda etapa toma el JAR generado y lo deja listo para correr en producción:
build/libs/*.jar el artefacto producido en la etapa anterior y lo renombra como platzi-play.jar, sin incluir la versión.EXPOSE.java -Dspring.profiles.active=prod -jar platzi-play.jar para arrancar con el perfil de producción [02:30].¿Por qué usar un Dockerfile multi-stage? Porque la imagen final solo contiene el JDK y el JAR compilado, no Gradle ni el código fuente. El resultado es una imagen más liviana y segura.
¿Cómo configurar la base de datos interna en Render?
Antes de desplegar, ajusta el application.properties con la URL interna de PostgreSQL que te entrega Render. La diferencia con la URL pública está en el host: la interna omite el sufijo .oregon-postgres.render.com y deja solo el nombre del servicio antes del puerto.
Esto importa por dos razones:
Solo elimina el segmento .oregon-postgres.render.com y conserva el puerto y el nombre de la base. Listo [04:00].
¿Cómo desplegar el Web Service en Render paso a paso?
Con el Dockerfile y la configuración listos, sube los cambios a GitHub con un commit tipo Desplegar en Render y haz push a main. Render tomará el código directamente desde ese repositorio.
Dentro de Render, sigue este flujo:
Platzi Play.main.La capa gratuita tiene limitaciones: el servicio puede dormirse tras periodos de inactividad y no incluye acceso SSH, pero para una práctica o un side project es suficiente.
¿Qué significa el warning de spring.jpa.open-in-view? Es una advertencia, no un error. Ese parámetro mantiene abierta la conexión a la base de datos hasta que se renderiza la respuesta, lo que puede generar consultas inesperadas. Spring recomienda definirlo explícitamente como
trueofalsesegún tu caso.
¿Cómo verificar que tu API está corriendo en Internet?
Cuando Render muestre el mensaje Live, tu servicio ya está disponible en la URL pública que aparece en la consola y en el panel superior. Si entras directo a la raíz, verás un 404 Not Found porque la aplicación tiene un context path definido en application.properties.
Prueba estos endpoints añadiendo el contexto correcto:
/movies para listar todas las películas almacenadas en la base de datos./hello para invocar la integración con LangChain4j y obtener una respuesta generada por IA [08:00].Si ambos responden, tu API ya está en producción, conectada a PostgreSQL y servida desde un contenedor Docker.
¿Qué aprendiste construyendo este backend?
El recorrido cubrió las piezas que diferencian un proyecto de juguete de un backend profesional:
Desde aquí puedes profundizar con Spring Data JPA para dominar persistencia avanzada, y luego con Spring Security para añadir autenticación y autorización profesional. ¿Qué endpoint vas a desplegar primero en tu propia cuenta de Render? Cuéntalo en los comentarios.
Luis Hernando Sarmiento Garzón
Muy buen curso, excelente primero entendiendo lo básico en el curso de Spring, considero que a la ruta de Java le falta un curso para el tema de test unitarios con Spring.
max anthony cachi ayala
Estuvo bueno el curso, pero aquí hay algo que falta y es que no enseña la arquitectura del proyecto para proyectos realmente en prod o "reales". Así mismo excelente sus explicaciones.
Juan David Grijalba
Excelente curso, todo estuvo muy claro 👍
Yhoan Andres Galeano Urrea
Gracias profe, muy buen curso. Excelente la explicación de cada parte.
Andru Ramirez
Excelente!! Agradecimientos al profesor y a PlatziDay!
Willy León
Con estoy ya puedo hacer mi portafolio de manera gratuita
Fabián Andrés Hoyos Carreño
Profe Gracias!!! Muy buen curso!!!
Jose Luis Junior Perez Gil
Me gustó mucho el curso, muy claro la forma de explicar del profe
Victor Hernandez
¡Excelente curso!
Andrés Felipe Perdomo Alvarado
El curso me gustó, estuvo muy bueno. El profesor siempre lo orientó a la responsabilidad única, cosa que también me gusta mucho, pues permite ser más ordenados y entender el porqué de cada carpeta. Tuve muy pocos problemas o fáciles de solucionar. Vengo de Nest.js y la transición fue muy rápida, todo es muy parecido. Curso recomendado al 100%.
Santiago Andres Gelvez Camargo
Es un curso super denso para quienes a pesar de venir de otros lenguajes, esta retomando Java como lenguaje. De todas formas, es un gran curso. Todo lo que aprendes es oro puro y te deja con ganas de explorar mas a profundidad cada cosa. Siguientes pasos: Data y Security.
Víctor Manuel
¿A alguien más le da un error al deployar en Render?
Me marca un error de root, pero ya validé que las credenciales estén correctas en el properties.
Caused by: org.postgresql.util.PSQLException: FATAL: password authentication failed for user "root"
Marcos Castro Miranda
no se si lo has solucionado pero parece que lo que tienes mal es el usuario, aparece root y quizas tengas tu nombre o el nombre del profesor
Ronny Camacho
Excelente curso, es una lastima que como entro solo en eventos gratuitos como el dia de hoy no me permite hacer el examen, pero igual agradecido por su enseñanza
Nataly Ponce
El Dockerfile que use para maven
FROM eclipse-temurin:21-jdk AS build
WORKDIR /app
COPY .mvn/ .mvn
COPY mvnw pom.xml ./
RUN chmod +x mvnw
RUN ./mvnw dependency:go-offline
COPY src ./src
RUN ./mvnw clean package -DskipTests
FROM eclipse-temurin:21-jre
WORKDIR /app
COPY --from=build /app/target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-Dspring.profiles.active=prod", "-jar", "app.jar"]
Edgar Huerta
Muy buen curso si buscas los fundamentos basicos de spring boot.
Luis Alfredo Navarro Albarracin
Buen curso profe!!! como algo adicional sería interesante la explicación de variables de entorno para no subir contraseñas al properties en el repo
Emanuel Sierra
Excelente curso, pude aprender como Spring Boot sigue evolucionando para bien, y como nos facilita el desarrollo cada vez más.
ANDRES ALFONSO MIRA MEJIA
✅