Cle*_*ves 93 java linux spring spring-boot
Spring boot的首选部署方法是通过一个包含tomcat的可执行jar文件.
它以简单的方式开始java -jar myapp.jar.
现在,我想将该jar部署到我在EC2上的linux服务器上,我是否遗漏了某些东西或者我是否真的需要创建一个init脚本来正确启动应用程序作为守护进程?
如果我java -jar在注销时简单地调用应用程序就死了.
我可以在屏幕或nohup中启动它,但这不是很优雅,我的服务器重启将迫使我登录并手动启动该过程.
那么,春季靴子的任务是否已经存在?
小智 86
请注意,自Spring Boot 1.3.0.M1以来,您可以使用Maven和Gradle构建完全可执行的jar.
对于Maven,只需在您的内容中包含以下内容pom.xml:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
对于Gradle,请将以下代码段添加到您的build.gradle:
springBoot {
executable = true
}
Run Code Online (Sandbox Code Playgroud)
完全可执行的jar在文件前面包含一个额外的脚本,允许您将Spring Boot jar符号链接到init.d或使用systemd脚本.
init.d 例:
$ln -s /var/yourapp/yourapp.jar /etc/init.d/yourapp
Run Code Online (Sandbox Code Playgroud)
这允许您启动,停止和重新启动应用程序,如:
$/etc/init.d/yourapp start|stop|restart
Run Code Online (Sandbox Code Playgroud)
或者使用systemd脚本:
[Unit]
Description=yourapp
After=syslog.target
[Service]
ExecStart=/var/yourapp/yourapp.jar
User=yourapp
WorkingDirectory=/var/yourapp
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
更多信息,请访问以下链接:
到目前为止,在生产中运行Spring Boot应用程序最简单可靠的方法是使用Docker.如果需要使用多个连接服务,请使用Docker Compose,Docker Swarm或Kubernetes.
这是一个简单Dockerfile的官方Spring Boot Docker指南,可以帮助您入门:
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" ]
Run Code Online (Sandbox Code Playgroud)
这是一个示例命令行,用于将容器作为守护程序运行:
docker run \
-d --restart=always \
-e "SPRING_PROFILES_ACTIVE=prod" \
-p 8080:8080 \
prefix/imagename
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
102759 次 |
| 最近记录: |