我现在是将项目编译成 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 环境? |