2017-08-11 189 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并进行部署。容器环境自动运行你的应用程序