¿Cuál debería ser la ruta exacta al archivo jar en el archivo Procfile para Spring Boot?
Estoy intentando desplegar una aplicación Spring Boot en Heroku (también utilizando un complemento JawsDB MySQL).
Después de hacer push a git y también a Heroku (git push heroku mybranch:master) y aunque la compilación siempre es exitosa, siempre recibo un error:
“at=error code=H14 desc=”No web processes running””.
Entiendo que esto significa que mi Procfile está incorrecto. El nombre del archivo está escrito correctamente, no tiene extensión y he indicado lo siguiente:
“web: java -jar C:/Users/Myname/Documents/Programming/appFolder/target/*.jar”
La línea anterior también aparece en heroku.com/resources -> free Dynos, por lo que se recogen los contenidos del Procfile.
Busqué en SO y otros lugares y encontré preguntas como https://stackoverflow.com/questions/69035291/heroku-sprinboot-deployment-is-sucess-but-status-is-503-service-unavailable y https://stackoverflow.com/questions/61006421/what-to-write-in-the-procfile, pero no encontré una respuesta final y práctica a mi pregunta.
Mi pregunta es:
1.¿A qué jar estoy dirigiendo a Heroku? Heroku construye el jar y no aparece en mi appFolder/target, solo un jar viejo que construí manualmente a través del comando “package” en eclipse. Es por eso que escribí *.jar (en mi desesperación), ya que quiero que recoja cualquier jar que encuentre, ya que realmente no sé cómo se supone que debe llamarse…
Además, ¿cuál sería el patrón correcto (barras diagonales o invertidas? ¿Comenzando por C:/?)?
2.¿Se supone que debo construir el jar yo mismo? Y si es así, ¿para qué sirve la construcción de Heroku?
- ¿Dónde se almacena el jar de Heroku si quiero acceder a él?
Gracias de antemano.
davy.ai
Solución para desplegar una aplicación Spring Boot en Heroku
1. Procfile
El mensaje de error “No hay procesos web en ejecución” suele ocurrir cuando el Procfile no especifica ningún proceso web. En su caso, el Procfile parece correcto. Sin embargo, debe reemplazar la ruta con una ruta relativa desde la raíz de su proyecto, así:
web: java -jar target/*.jar
2. Buildpacks
Necesita especificar los buildpacks para que su aplicación funcione correctamente. Heroku detecta automáticamente que está utilizando Java pero no Spring Boot. Agregue los siguientes buildpacks:
3. No crear JAR manualmente
No es necesario crear un archivo JAR manualmente. Heroku construye el archivo JAR utilizando Maven cuando envía el código a su plataforma. Heroku construye la aplicación en el dyno que también inicia el proceso web. Por lo tanto, es esencial especificar un proceso web en el Procfile.
Conclusión
En resumen, los pasos necesarios para desplegar una aplicación Spring Boot en Heroku son:
Esperamos que esto resuelva el problema y despliegue con éxito su aplicación Spring Boot en Heroku.