2017-03-16 53 views
0

我目前正在部署在heroku的Spring Boot應用程序。該應用程序在同一個倉庫(前端和後端)上有兩個主要項目。我設法使用node.js來運行前端,並且(技術上)也設法運行spring引導應用程序。春季啓動heroku「沒有web進程運行」

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個過程(一個正面和一個用於服務器)。有2個不同的heroku應用程序運行每個dynos。 node.js dyno正在工作,但使用Spring引導的不是。

這是回購的文件夾結構:

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

希望有人能幫助我。

PD:根文件夾中的package.json和pom.xml與前端和服務器文件夾中的package.json和pom.xml相同。

回答

1

我確定您的確切設置,但通常您只能有一個進程接收http請求。而這個過程必須命名爲web。在你的情況下,web進程是你的節點應用程序。 api進程可以正常運行,但它永遠不會收到任何請求。您需要將這兩個進程分成兩個獨立的Heroku應用程序。

+0

謝謝。你是對的,Web進程就是接收http請求的進程。我有2個不同的應用程序,但有一個包含這兩個應用程序的回購。有可能有2個procfile文件,並指定哪一個適用於每個應用程序? –

+0

您可以創建一個額外的腳本,根據某個env變量運行節點應用程序或彈簧應用程序,例如「APP_TYPE」。在您的Procfile中,只需將此腳本作爲Web進程運行即可。我認爲它應該工作。另一個解決方案是創建簡單的buildpack,在構建期間創建適當的Procfile,但這是更復雜的解決方案。 –