【问题标题】:Spring boot heroku "No web processes running"Spring boot heroku“没有正在运行的Web进程”
【发布时间】:2017-03-17 03:17:42
【问题描述】:

我目前正在开发一个部署在 heroku 中的 Spring Boot 应用程序。该应用程序在同一个仓库(前端和后端)上有 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)

这是我的过程文件:

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

它声明了2个进程(一个用于前端,一个用于服务器)。有 2 个不同的 heroku 应用程序运行每个 dynos。 node.js dyno 工作正常,但 Spring boot 没有。

这是repo的文件夹结构:

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

希望有人可以帮助我。

PD:根文件夹中的 package.json 和 pom.xml 与 frontend 和 server 文件夹中的相同。

【问题讨论】:

    标签: heroku spring-boot


    【解决方案1】:

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

    【讨论】:

    • 谢谢。没错,Web 进程是接收 http 请求的进程。我有 2 个不同的应用程序,但有一个包含两者的存储库。可以有 2 个 procfile 文件并指定哪个适用于每个应用程序?
    • 您可以创建一个额外的脚本,该脚本将根据某些环境变量运行您的节点应用程序或 Spring 应用程序,例如 APP_TYPE。在您的 Procfile 中,只需将此脚本作为 Web 进程运行。我认为它应该工作。另一种解决方案是创建简单的 buildpack,在构建期间创建适当的 Procfile,但它是更复杂的解决方案。
    猜你喜欢
    • 2017-01-08
    • 2020-05-21
    • 2021-07-17
    • 2013-09-04
    • 2021-03-31
    • 2012-04-15
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多