请教一下,大家如何部署 springboot 后端程序,请给出您的建议。ありがとうございます。

2023-05-04 13:01:31 +08:00
 mengjisang

,我知道可以 java -jar xxx.jar 跑程序,但是感觉太散装了,tmux 方便调试,却不是合理的运维方式

5124 次点击
所在节点    Java
46 条回复
nba2k9
2023-05-04 13:06:40 +08:00
这个主题为什么会有一个 [散装] 的标签
xhldtc
2023-05-04 13:07:57 +08:00
看你部署环境,一般虚拟机就是 java -jar 启动跑的,还能怎么跑。如果是 k8s 环境的话就是打包成容器镜像再部署。看看官网的 prod 环境部署最佳实践吧
zliea
2023-05-04 13:15:38 +08:00
1. nohup+java -jar
2. 模拟写一个 systemd 的 service 文件
3. docker
FreeEx
2023-05-04 13:18:44 +08:00
建议使用系统服务的方式启动,这样挂了自动拉起,开机自启动啥的都搞定了。
voidmnwzp
2023-05-04 13:19:19 +08:00
?日本人?
cookii
2023-05-04 13:21:19 +08:00
宿主机启动,service 启动,docker 启动最后本质不都是 Java -jar 吗,除非你打成 native 包
deadlyn
2023-05-04 13:21:23 +08:00
部署 VM 一般就打包:
1 、整个 jar
2 、利用诸如 assembly 打包成 zip ,分离自己的业务 jar 、三方 sdk 、外置资源配置(后续根据变动情况,可仅替换变动的部分,如常变动的业务 jar )

容器化部署:打包成 image

按需编写启动的 shell 脚本
OysterQAQ
2023-05-04 13:23:12 +08:00
@nba2k9 散装日语
iloveayu
2023-05-04 13:25:01 +08:00
@nba2k9 因为楼主的日语是散装的。
sensuzu
2023-05-04 13:30:22 +08:00
日本人???
LeegoYih
2023-05-04 13:32:38 +08:00
# Dockerfile

FROM openjdk
COPY *.jar /app.jar
EXPOSE 8080
ENTRYPOINT ["sh","-c","java -Dspring.profiles.active=prod -jar /app.jar"]
siweipancc
2023-05-04 13:43:45 +08:00
包它哥一百层,启动参数还是土的一行,要不转行销售吧
blankmiss
2023-05-04 13:46:05 +08:00
你是霓虹人🐎 为什么不用 docker 部署
superedlimited
2023-05-04 13:47:36 +08:00
我竟然看懂了前面的阿里嘎多😹
salmon5
2023-05-04 14:01:24 +08:00
vm 部署:java -jar test.jar ,通过 supervisor 或者 systemd 包一层也行
容器部署:打包成容器镜像
就这 2 种方式
mengjisang
2023-05-04 14:03:29 +08:00
谢谢大家的建议,OP 颇受启发
cslive
2023-05-04 14:13:52 +08:00
tomcat
SuperShuYe
2023-05-04 14:20:32 +08:00
from chatgpt
当您部署 SpringBoot 后端程序时,以下是一些建议:

使用开发环境中的配置文件 - SpringBoot 包含了一些内置的配置文件,可以方便开发者对基础配置项进行设置,例如 application.properties 或者 application.yaml 这些文件。其中,application.properties 支持 key-value 键值对的方式,并且是默认使用的配置文件。如果您需要更复杂的配置,可以使用 application.yaml ,这是使用 YAML 文件格式的配置文件。

在生产环境中使用外部配置文件 - 要部署 SpringBoot 应用程序到生产环境中,可以使用外部配置文件来配置应用程序的选项。这样可以更方便地进行部署和更新操作,因为外部配置文件可以在应用程序启动之前进行更改。

使用系统变量来配置应用程序 - 很多应用程序的配置选项是可以通过系统变量进行配置的。这样可以更方便地进行修改和部署,同时也可以避免一些机密信息暴露在配置文件中。

使用 Docker 部署 - Docker 是一个流行的容器化平台,可以帮助您更轻松地进行部署和管理。使用 Docker 部署 SpringBoot 应用程序可以帮助您在不同环境中保持应用程序的稳定性和可靠性。

使用自动化工具进行持续集成和部署 - 自动化工具可以帮助您更快速地进行持续集成和部署。一些流行的自动化工具包括 Jenkins 、CircleCI 和 Travis CI 等。这些工具可以帮助您自动化构建、测试和部署应用程序,以及自动化修改和合并代码。

希望以上建议能帮助您更好地部署 SpringBoot 后端程序。
hengyunabc
2023-05-04 14:39:45 +08:00
spring boot 其实自带一套 service 机制,jar 本身就是一个脚本,打包时配置下就好: https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#deployment.installing

原理: https://hengyun.tech/spring-boot-executable-jar/
clf
2023-05-04 14:41:42 +08:00
docker 本质是打包成 jar

我们会用 jib 来打包上传 docker 镜像。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/937205

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX