我现在是将项目编译成 jar,然后上传到服务器,然后 nohup java -jar xx.jar &,不算麻烦,也不算简单,因为想要更新 spring boot 项目的代码,就需要重新编译,重新上传到服务器,kill pid 上一个 8080 的进程,再重新打一遍指令,比起 caddy 部署前端的 react 项目可以直接拉取 git 项目更新,还是繁琐了一些,唯一解就是自己写个 python 脚本么?
1
chendy 2019-08-22 14:26:10 +08:00
最简单就脚本搞定,最好再弄个 CI 自动跑
最复杂就 k8s (或者类似的东西) + CI 跑脚本搞定 |
2
Foxkeh 2019-08-22 14:28:50 +08:00 via Android
安装成系统服务
|
3
luozic 2019-08-22 14:29:00 +08:00 via iPhone
jenkins 开源的 还有闭源的 CI 工具,找一个抄一下跑,复杂点就是基于 CI+K8s+配置服务器 打镜像的方式玩部署。
|
4
RYAN0UP 2019-08-22 14:29:13 +08:00 via Android
可以用 pm2 管理
|
5
LeeSeoung 2019-08-22 14:32:10 +08:00
jenkins 或者自己写脚本 ssh 到远端机器部署,也可以上 docker,k8s 个人小型没必要上,维护工作量比较大。
|
6
skycitygalaxy 2019-08-22 14:32:35 +08:00
看你这个需求,建议使用 docker-compose,把 yaml 文件写代码里面,每次拉代码编译+部署
|
7
jorneyr 2019-08-22 14:32:54 +08:00
如果使用 Gradle 的话,可以看看这个插件 org.hidetake.ssh
|
8
GM 2019-08-22 14:34:59 +08:00
就你们现在的需求的话,直接编译成 war,上传到 tomcat 的 webapps 目录完事。
|
9
Perolong OP @skycitygalaxy 好的我试试
|
10
KingPL 2019-08-22 14:58:27 +08:00
git 拉代码,docker 跑个 maven 编译,移动 jar,docker restart **java,单个项目目前这样玩
|
11
ClutchBear 2019-08-22 15:10:38 +08:00
jenkins 自动拉取编译和部署
然后自动执行 superviserctl restart springboot |
13
yannxia 2019-08-22 15:28:39 +08:00
单机 docker,然后 docker stop && docker run,玩的花一点的就像楼上 @KingPL 挂载 Vol,然后 Restart
|
14
registerrr 2019-08-22 15:32:13 +08:00 via Android
跟你现在的部署方式一模一样…
|
15
lihongjie0209 2019-08-22 15:33:14 +08:00
可以使用 tmux 来替代 nohup, 上传 jar 包这个动作无法避免的, 只是看你上传到哪里, 如果你有 nexus 之类的私有仓库, 可以在本地直接 deploy 上去, 然后脚本 wget 就好了。
分享一个 tmux 脚本, 杀死之前的进程并重新启动 (tmux kill-session -t app || true) && tmux new-session -d -s app "java -Dlog4j.configuration=log4j-pro.properties -jar /opt/app.jar “” |
16
xuanbg 2019-08-22 15:39:41 +08:00
自然是 Jenkins+docker,先 maven 打包,然后 docker build 制作镜像,push 到私有仓库后在服务器上面 run 就好了。
|
17
qwerthhusn 2019-08-22 15:41:51 +08:00
可以使用不打 jar 包的方式
|
18
qwerthhusn 2019-08-22 15:42:25 +08:00
这样如果想更新某个 class 或者某个文件,就不用重新打包浪费时间
|
19
kaiser1992 2019-08-22 15:54:33 +08:00
1.上传到 git 仓库;
2.脚本读取源码,然后 build; 3.运行 |
20
cyril4free 2019-08-22 16:07:42 +08:00
gitlab+CI/CD
|
21
lllllliu 2019-08-22 16:36:00 +08:00
github/gitlab 有 webhook 呀,最简单的就是 push 之后触发 hook 然后,你可以写个脚本让他操作你想要做的事情。
|
22
jerry74 2019-08-22 16:56:57 +08:00
|
23
liiihhhh 2019-08-22 17:00:49 +08:00
上传 jar,pm2 start
|
24
limuyan44 2019-08-22 17:10:57 +08:00
以前搞过一个项目我写了个 shell,更新的时候 sh xx.sh 就好了。 拉代码-编译-打包-停服务-上传 jar-启动。
|
25
wongy 2019-08-22 17:26:14 +08:00
用的 appassembler-maven-plugin 打包成 tar.gz 超级实用。去年面了很多家公司,问了一下打包发布方式都是 jar。
去过一家公司用 docker 打包部署。 |
26
Seney 2019-08-22 17:30:19 +08:00
我是用 gitlab 代码推送到服务器就开始 build 然后 deploy
|
27
Unbelievable9 2019-08-22 17:35:54 +08:00
在 system.d 加入你的服务 相关配置可以参考 https://stackoverflow.com/questions/21503883/spring-boot-application-as-a-service
|
28
StarkWhite 2019-08-22 18:12:44 +08:00
|
29
mritd 2019-08-22 18:26:36 +08:00 via iPhone
Docker + ci
|
30
JasperWong 2019-08-22 18:30:47 +08:00
jenkins
|
31
JRay 2019-08-22 19:39:54 +08:00
jenkins + 1
|
32
br00k 2019-08-22 20:32:13 +08:00
不想麻烦,又想简单。就直接在部署的服务器上部署一个 Jenkins 就好了,更新的时候就不用上传了。
|
33
liuxey 2019-08-23 09:17:40 +08:00
大致四步吧
git pull maven package docker build docker run 另外:gitlab ci/cd 很好用 |
34
print1024 2019-08-23 10:35:10 +08:00
本地的话用这个:
wagon-maven-plugin 能直接上传到服务器并且可以配置命令 springboot 建议三方依赖和业务代码分离打包 |
35
StarkWhite 2019-08-23 12:24:15 +08:00
我公司也在用 Jenkins 自动打包
|
36
haitongz 2019-08-23 13:20:26 +08:00
考虑到可运维性最好使用专门的发布系统,简单点也可以使用 Jenkins/Gitlab
配合 ansible 脚本能够比较方便的上线和回滚 另外可以搭建 nexus 或者 jfrog artifactory 免费版作为制品管理仓库,不用每次都从源码编译 |
37
suijishu 2019-08-23 13:37:13 +08:00
使用阿里云效,20 人以内免费,现在公司的 8 个服务,都是用这个发布。特方便,可以试试。
|
38
hongye 2023-01-12 14:52:53 +08:00
有个疑问,为什么都想用 docker 包一层,不像安装 jdk 环境?
|