【问题标题】:Spring Boot and Cloud deploymentSpring Boot 和云部署
【发布时间】:2017-08-11 12:36:43
【问题描述】:

我目前正在使用 Spring Boot 开发 REST API。我希望它部署在谷歌云(计算引擎)上。 我创建了一个虚拟 linux 机器,安装了 java 8 并将我的 spring boot 应用程序放入其中。 它工作正常,但是: 我的应用程序是一个 jar 文件(嵌入式 Tomcat)。我用这个启动它: java -jar myApp.jar 它工作正常。 但是当我关闭谷歌云上的外壳时,我的应用程序不再可用。 我希望我的应用程序始终可用,而不必每次退出 shell 时都启动它。有可能吗?

image of cloud shell

【问题讨论】:

    标签: google-app-engine tomcat spring-boot cloud embedded-jetty


    【解决方案1】:

    我认为这与Unix Thread 的问题相同。

    快速回答是您的进程已链接到终端。当您关闭它时,该进程将被终止。如果我引用this answer

    另一方面,nohup 的作用是有效地将 从终端处理:

    • 它关闭标准输入(程序将无法读取任何输入,即使它在前台运行。它不会停止,但会 收到错误代码或 EOF)。
    • 它将标准输出和标准错误重定向到文件 nohup.out,因此程序不会因为写入标准输出而失败,如果 终端失败了,所以无论进程写入什么都不会丢失。
    • 它阻止进程接收 SIGHUP(因此得名)。

    所以,试试

    nohup  java -jar myApp.jar &
    

    【讨论】:

      【解决方案2】:

      如果您使用虚拟机(谷歌计算引擎),您可以使用脚本(Windows 中的 bat 或 linux 中的 sh)来执行 java -jar 命令,但您也可以使用容器引擎并创建一个 docker 容器你的应用程序。配置 dockerfile 并部署。容器环境自动运行你的应用

      【讨论】:

        猜你喜欢
        • 2021-01-18
        • 1970-01-01
        • 2014-05-27
        • 1970-01-01
        • 2018-05-24
        • 2020-12-20
        • 2017-09-30
        • 2016-01-14
        • 2018-09-23
        相关资源
        最近更新 更多