springboot Linux后台部署
本次主要讨论Spring Boot 打成 Jar 包后的四种部署方式。
java -jar nohup systemd docker
由于 Jar 包中包含了 Tomcat ,因此可以直接通过对 Jar 操作,实现和 Tomcat 启动 War 包一样。
此处并不涉及对 docker 容器部署的讨论。
java -jar
命令:
java -jar my.jar
这种方式是最为常见的启动方式。在启动时,控制台会打印应用启动时的信息。如果通过 Xshell 等工具打开窗口进行启动,当关闭窗口时或者使用 CTRL + C后,应用会停止。
这种方式只适合临时测试使用。
nohup
nohup java -jar my.jar & >my.log 2>&1 &
这种方式可以解决上一种,因为关闭窗口或执行终止命令,导致退出的问题。
以这种方式启动时,应用会在后台运行,控制台输出的日志会被写入当前文件夹的my.log中。
如果想要停止应用,可以先使用 jps -l 来查看PID 和应用。然后使用 kill -9 <PID>,便可以停止应用。
_______________________________________________________
systemd
这种方式针对 SpringBoot 来说,管理起来非常的方便和高效。直接将应用注册为服务,借助 systemctl 命令来管理应用。
比上面一种来说,不用找到指定的 jar 所在的路径,全局可用。
1.编写一个 service 文件,my.service。
[Unit] Description=my service After=syslog.target [Service] User=root ExecStart=/var/my/my.jar SuccessExitStatus=143 [Install] WantedBy=multi-user.target
ExecStart :表示需要启动的jar所在位置。
2.然后将 my.service 复制到指定的位置:
cp my.service /etc/systemd/system/
3.执行以下命令启动jar:
systemctl enable my.service
systemctl start my.service
4.停止和重启
systemctl stop my.service
systemctl restart my.service
5.查看控制台输出日志
journalctl -u my.service
docker
创建/home/docker文件夹,将打包的jar包上传
创建/home/docker/logs文件夹存放日志文件,该路径与项目中logback中设置的一致
创建Dockerfile,内容如下
#指定基础镜像,不需要另外安装jdk FROM java:8 #维护者 MAINTAINER lxg #将本地文件添加到容器中,并更名为myproject.jar COPY springboot-docker-1.0-SNAPSHOT.jar myproject.jar #指定访问端口,与yml文件中的端口一致 EXPOSE 8081 #容器启动时,运行该程序 ENTRYPOINT ["java", "-jar", "myproject.jar"]
使用命令构建镜像
最后空格和"."不可忽略
docker build -t myproject .
创建并启动容器
docker run -p 8080:8081 --name myproject \
> -v /home/docker/logs:/home/docker/logs \
> -d myproject
8080是外界访问的端口,可以自定义,8081是Dockerfile中定义的端口。
-v是为了将容器中的日志目录挂载出来,冒号之前是linux宿主机自己创建的目录,可以自定义。后面的是logback文件中定义的输出日志的目录。
验证
页面成功访问接口,说明部署成功,192.168.56.102是linux的ip。注意防火墙是否开启,端口是否开放。
关于使用Docker-Compose 系统化自动部署参考
https://blog.csdn.net/weixin_51099370/article/details/125898845