Ich arbeite gerade an einer Spring Boot-Anwendung, die in heroku bereitgestellt wird. Die Anwendung hat 2 Hauptprojekte auf demselben Repo (Frontend und Backend). Ich habe es geschafft, das Frontend mit node.js laufen zu lassen und (technisch) auch die Spring-Boot-Applikation laufen zu lassen.Spring boot heroku "Keine Webprozesse werden ausgeführt"
2017-03-16T08:17:14.834886+00:00 app[api.1]: 2017-03-16 08:17:14.834 INFO 4 --- [main] o.s.web.servlet.DispatcherServlet: FrameworkServlet 'dispatcherServlet': initialization completed in 35 ms
2017-03-16T08:17:14.906139+00:00 app[api.1]: 2017-03-16 08:17:14.905 INFO 4 --- [main] com.zilicio.editor.ServerApplication: Started ServerApplication in 14.331 seconds (JVM running for 16.638)
2017-03-16T08:17:14.881330+00:00 app[api.1]: 2017-03-16 08:17:14.881 INFO 4 --- [main] .s.b.c.e.j.JettyEmbeddedServletContainer: Jetty started on port(s) 11831 (http/1.1)
Alles scheint in Ordnung, nach diesen Protokollen, aber wenn ich auf die Anwendung zugreifen zurückkehrt es eine HTTP-500 behauptet, dass es keine Web-Prozess ausgeführt werden.
2017-03-16T08:17:29.435087+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/api/projects" (...)
Aber wenn ich mit Heroku ps überprüfen
api.1: up 2017/03/16 03:16:56 -0500 (~ 30m ago)
Das ist mein procfile:
web: node Z-Editor/Frontend/server.js
api: java -Dserver.port=$PORT $JAVA_OPTS -jar Z-Editor/Server/target/*.jar
Es erklärt die 2 Verfahren (eine für die Vorderseite und eine für den Server). Es gibt 2 verschiedene Heroku-Apps, auf denen jeweils eines der Dynos läuft. Der node.js-Dynode funktioniert, aber der mit Spring-Boot funktioniert nicht.
Dies ist die Ordnerstruktur des Repo:
+root
- procfile
+ frontend
- package.json
- ...
+ server
- src
- pom.xml
+ target
- server.jar
- ...
- package.json
Hoffnung jemand kann mir helfen.
PD: Die Dateien package.json und pom.xml im Stammordner sind identisch mit denen in den Frontend- und Serverordnern.
Danke. Sie haben recht, der Web-Prozess ist derjenige, der die http-Anfragen empfängt. Ich habe 2 verschiedene Apps, aber es gibt ein Repo, das beides enthält. es ist möglich, 2 procfile-dateien zu haben und anzugeben, welche für jede app gilt? –
Sie können ein zusätzliches Skript erstellen, das abhängig von einer env-Variablen, z. B. 'APP_TYPE', entweder Ihre Knoten-App oder Ihre Spring-App ausführt. Führen Sie dieses Skript in Ihrem Procfile einfach als Webprozess aus. Ich denke, es sollte funktionieren. Eine andere Lösung wäre, ein einfaches Buildpack zu erstellen, das während des Builds ein entsprechendes Procfile erstellt, aber es ist eine kompliziertere Lösung. –