Spring boot heroku“没有运行web进程”

时间:2017-03-16 08:55:49

标签: heroku spring-boot

我目前正在研究部署在heroku中的Spring Boot应用程序。该应用程序在同一个repo(前端和后端)上有2个主要项目。我设法使用node.js运行前端,并且(技术上)也设法运行spring boot应用程序。

    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)

根据日志,一切似乎都没问题,但是当我访问应用程序时,它返回一个HTTP 500,声称没有Web进程在运行。

    2017-03-16T08:17:29.435087+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/api/projects" (...)

但是当我用heroku ps检查时

    api.1: up 2017/03/16 03:16:56 -0500 (~ 30m ago)

这是我的procfile:

    web: node Z-Editor/Frontend/server.js
    api: java -Dserver.port=$PORT $JAVA_OPTS -jar Z-Editor/Server/target/*.jar

它声明了2个进程(一个用于前端,一个用于服务器)。每个dynos都有2个不同的heroku应用程序。 node.js dyno正在工作,但Spring引导的不是。

这是回购的文件夹结构:

    +root
      - procfile
      + frontend
         - package.json
         - ...
      + server
         - src
         - pom.xml
         + target
            - server.jar
            - ...
      - package.json

希望有人可以帮助我。

PD:根文件夹中的package.json和pom.xml与前端和服务器文件夹中的相同。

1 个答案:

答案 0 :(得分:1)

我确定您的确切设置,但一般情况下,您只能有一个接收http请求的进程。此过程必须命名为web。在您的情况下,web进程是您的节点应用程序。 api进程可以运行正常,但它永远不会得到任何请求。您需要在两个单独的Heroku应用程序中拆分这两个进程。