首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在生产环境中运行spring boot可执行jar?

如何在生产环境中运行spring boot可执行jar?
EN

Stack Overflow用户
提问于 2014-04-06 03:59:47
回答 5查看 140.6K关注 0票数 113

Spring boot的首选部署方法是通过一个内部包含tomcat的可执行jar文件。

它是从一个简单的java -jar myapp.jar开始的。

现在,我想把这个jar部署到EC2上的linux服务器上,我是不是遗漏了什么,或者我真的需要创建一个init脚本来正确地将应用程序作为守护进程启动?

如果我只是简单地调用java -jar,那么当我注销时应用程序就会死掉。

我可以在screen或nohup中启动它,但这并不是很优雅,在我的服务器中重新启动将迫使我登录并手动启动该进程。

那么,spring boot中的任务已经有了什么东西了吗?

EN

回答 5

Stack Overflow用户

发布于 2017-05-26 23:35:11

到目前为止,在生产环境中运行Spring Boot应用程序最简单、最可靠的方法是使用Docker。如果您需要使用多个连接的服务,请使用Docker Compose、Docker Swarm或Kubernetes。

这是一个来自官方Spring Boot Docker guide的简单Dockerfile,可以帮助您入门:

代码语言:javascript
复制
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD YOUR-APP-NAME.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

构建Docker镜像的一个更好的方法是使用Jib,这是一个由谷歌维护的开源Java工具,用于构建Java应用程序的Docker镜像。Jib不需要Dockerfile,只需使用Maven (官方快速入门here)或Gradle (官方快速入门here)调用它即可。

以下是将容器作为守护进程运行的示例命令行:

代码语言:javascript
复制
docker run \
  -d --restart=always \
  -e "SPRING_PROFILES_ACTIVE=prod" \
  -p 8080:8080 \
  prefix/imagename
票数 11
EN

Stack Overflow用户

发布于 2015-04-08 20:52:40

在生产环境中,您希望您的应用程序在机器重启等情况下再次启动,创建/ etc /init.d/脚本并链接到适当的运行级别来启动和停止它是正确的方法。Spring Boot不会扩展到这一点,因为它是一个操作系统特定的设置,还有大量的其他选项,你是否希望它在chroot监狱中运行,它是否需要在其他一些软件之前停止/启动等。

票数 2
EN

Stack Overflow用户

发布于 2016-03-25 19:34:05

您可以使用名为Supervisor的应用程序。在supervisor配置中,您可以定义多个服务以及执行这些服务的方式。

对于Java和Spring boot应用程序,命令应该是java -jar springbootapp.jar

如果EC2重新启动,管理程序将重新启动您的应用程序,则可以提供选项来保持应用程序运行always.So

与将启动脚本放在/etc/init.d/中相比,我发现Supervisor很容易使用。如果出现错误,启动脚本将挂起或进入等待状态。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22886083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档