,我知道可以 java -jar xxx.jar 跑程序,但是感觉太散装了,tmux 方便调试,却不是合理的运维方式
1
nba2k9 2023-05-04 13:06:40 +08:00
这个主题为什么会有一个 [散装] 的标签
|
2
xhldtc 2023-05-04 13:07:57 +08:00
看你部署环境,一般虚拟机就是 java -jar 启动跑的,还能怎么跑。如果是 k8s 环境的话就是打包成容器镜像再部署。看看官网的 prod 环境部署最佳实践吧
|
3
zliea 2023-05-04 13:15:38 +08:00
1. nohup+java -jar
2. 模拟写一个 systemd 的 service 文件 3. docker |
4
FreeEx 2023-05-04 13:18:44 +08:00
建议使用系统服务的方式启动,这样挂了自动拉起,开机自启动啥的都搞定了。
|
5
voidmnwzp 2023-05-04 13:19:19 +08:00 via iPhone
?日本人?
|
6
cookii 2023-05-04 13:21:19 +08:00 via Android
宿主机启动,service 启动,docker 启动最后本质不都是 Java -jar 吗,除非你打成 native 包
|
7
deadlyn 2023-05-04 13:21:23 +08:00
部署 VM 一般就打包:
1 、整个 jar 2 、利用诸如 assembly 打包成 zip ,分离自己的业务 jar 、三方 sdk 、外置资源配置(后续根据变动情况,可仅替换变动的部分,如常变动的业务 jar ) 容器化部署:打包成 image 按需编写启动的 shell 脚本 |
10
sensuzu 2023-05-04 13:30:22 +08:00
日本人???
|
11
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"] |
12
siweipancc 2023-05-04 13:43:45 +08:00 via iPhone 3
包它哥一百层,启动参数还是土的一行,要不转行销售吧
|
13
blankmiss 2023-05-04 13:46:05 +08:00
你是霓虹人🐎 为什么不用 docker 部署
|
14
superedlimited 2023-05-04 13:47:36 +08:00 via iPhone
我竟然看懂了前面的阿里嘎多😹
|
15
salmon5 2023-05-04 14:01:24 +08:00 1
vm 部署:java -jar test.jar ,通过 supervisor 或者 systemd 包一层也行
容器部署:打包成容器镜像 就这 2 种方式 |
16
mengjisang OP 谢谢大家的建议,OP 颇受启发
|
17
cslive 2023-05-04 14:13:52 +08:00
tomcat
|
18
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 后端程序。 |
19
hengyunabc 2023-05-04 14:39:45 +08:00 6
spring boot 其实自带一套 service 机制,jar 本身就是一个脚本,打包时配置下就好: https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#deployment.installing
原理: https://hengyun.tech/spring-boot-executable-jar/ |
20
clf 2023-05-04 14:41:42 +08:00
docker 本质是打包成 jar
我们会用 jib 来打包上传 docker 镜像。 |
21
cheng6563 2023-05-04 14:55:29 +08:00
不还是老办法老办法,docker ,systemd ,service 啊。
|
22
zhiyu1998 2023-05-04 14:59:45 +08:00
@superedlimited #14 阿里嘎多 3Q 思密达,我太喜欢白嫖了
|
23
deorth 2023-05-04 15:15:29 +08:00 via Android
君日本語本当上手
|
24
mengjisang OP @deorth 君の日本語は上手ですね
|
25
mengjisang OP @hengyunabc 谢谢老哥,这是我一直以来忽略的官方文档
|
26
shanghai1943 2023-05-04 15:43:10 +08:00
java service wrapper. 也是你们日本人开发的。
|
27
Arumoh 2023-05-04 15:54:47 +08:00
直接写了个脚本管理部署、更新、运行、回滚
|
28
RRRoger 2023-05-04 17:02:04 +08:00
打个 jar 包 使用 pm2 管理进程
|
29
DosLee 2023-05-04 17:14:17 +08:00
@zliea 关于第二点。我记得 springboot 是支持把我自己注册为一个服务的,不过需要新增一个同 jar 名一样的配置文件,然后直接 jar 名称+start 就能启动了
|
30
fivesmallq 2023-05-04 17:45:19 +08:00
|
31
xuanbg 2023-05-04 18:44:18 +08:00
做一个有 JDK 的 docker 镜像,然后把 jar 包放进去再生成一个镜像上传镜像仓库,或者上传 jar 包到服务器上生成镜像都是可以的。
|
32
Narcissu5 2023-05-04 18:51:42 +08:00
springboot 的官方文档专门有一章讲部署的。包含部署到云,部署为 linux 服务等等
|
33
Narcissu5 2023-05-04 18:51:56 +08:00
|
34
cbdyzj 2023-05-04 19:05:45 +08:00
systemd 方案
screen/temux 方案 supervisor/pm2 方案 docker/k8s 方案 主流的四种方案 |
35
adoal 2023-05-04 19:40:15 +08:00 via iPhone
以上都是 fat jar 的方法。还可以 build 成 war ,用传统的 tomcat 方法启动。
|
36
cquan 2023-05-04 20:29:31 +08:00
我一般用宝塔
|
37
wdlth 2023-05-04 23:51:38 +08:00
我们这边是用 Docker 分层
|
38
OutOfMemoryError 2023-05-05 00:02:50 +08:00
@nba2k9 标签是啥插件啊
|
39
zu1y 2023-05-05 00:22:34 +08:00
用 gradle application plugin ,可以生成个启动脚本
|
40
Dlin 2023-05-05 10:02:23 +08:00
我目前有使用三种方式打包 docker ,
1 、直接 mvn package 打一个胖包后配合 dockerfile 生成镜像 2 、使用 spring-boot 官方的 maven 插件中的构建镜像,使用的是 paketobuild ,这个比较方便,但是国内的高墙让整个团队使用是不太友好的。 3 、因此第三种是使用谷歌的 jib 插件,这个打包也很方便,不需要写 dockerfile ,生成的也不是一个单独的胖包,方便查看和 以上 2 和 3 因为通过 maven 插件打包,可以很好的利用 maven 得 profile 来激活一些配置或者参数,2 也自带一些优化项(具体我也没有去了解有哪些优化项) |
41
dif 2023-05-05 11:33:00 +08:00
Jenkins 配合 shell 脚本,或者直接打成 docker 镜像部署。
|
43
LXGMAX 2023-05-05 15:50:24 +08:00
哟西,大大滴干活
|
44
mengjisang OP @LXGMAX 良し
|
46
zengyufei 2023-05-12 17:51:09 +08:00
第一次没啥经验
maven package 进入 target 复制 jar 包 上传到 linux 服务器 安装 k3s 执行 k3s 的 deployment.yaml 第二次是个老手 docker 运行 jenkins jenkins 帮我拉代码 jenkins 帮我 maven package jenkins 上传 jar 包到 linux 服务器(其他目标机器) jenkins 帮我执行 deployment.yaml 第三次你自己动 让 jenkins 定时拉代码,自己重复第二次的动作 |