2017-08-11 242 views
1

我目前正在開發Spring引導的REST API。我希望它在谷歌雲(計算引擎)上部署。 我創建了一個虛擬的linux機器,安裝了java 8,並把我的spring啓動應用程序放在裏面。 它工作正常,但: 我的應用程序是一個jar文件(嵌入式Tomcat)。我推出了這個: java -jar myApp.jar 它工作正常。 但是,當我關閉谷歌雲上的外殼,我的應用程序不再可用。 我希望我的應用程序始終可用,而無需每次退出shell時啓動它。可能嗎 ?春季啓動和雲部署

image of cloud shell

回答

0

我這是與Unix Thread相同的問題。

快速回答是您的過程鏈接到終端。當你關閉它時,這個過程就會被終止。如果我引用this answer

什麼nohup的呢,在另一方面,是爲了有效的 過程從終端分離:

  • 它關閉標準輸入(該程序將無法讀取任何>輸入,即使它在前臺運行,它也不會被暫停,但是 會收到錯誤代碼或EOF)。
  • 它將標準輸出和標準錯誤重定向到文件nohup.out,所以如果終端發生故障,寫入標準輸出時程序不會失敗,因此無論進程寫入什麼都不會丟失。
  • 它阻止進程接收SIGHUP(因此名稱)。

所以,儘量

nohup java -jar myApp.jar & 
+0

感謝。它現在適用於你的命令。 – AntonBoarf

+0

@AntonBoarf如果是您需要的解決方案,請將此答案標記爲已接受。 – Akah

0

如果使用虛擬機(谷歌計算引擎),可以使用(在Windows或Linux中SH蝙蝠)的腳本來執行Java的罐子命令,但您可以使用太容器引擎並用你的應用程序創建一個docker容器。配置dockerfile並進行部署。容器環境自動運行你的應用程序