Springboot+Docker 自动化部署方案?

2018-03-19 14:47:18 +08:00
 night98

最近新开的一个项目,基于 SpringBoot 开发。

目前思路是基于 Docker 镜像运行,单台机器运行 2-3 个 Docker 应用,希望每次提交更新后从 Git 上自动拉取源码编译后关闭当前 Docker 容器,并运行新的 Docker 容器,然后 Nginx 自动更新配置实现自动化部署,现在想问问有没有什么比较好的方案解决这个问题,目前不知道该怎么下手做。用 Jenkins ? 还有就是 SpringBoot 端口随机,如何获取端口再写入到 Nginx 规则中?

10394 次点击
所在节点    Java
15 条回复
qfdk
2018-03-19 14:51:35 +08:00
当然有啦 顺便安利个自己的 ui https://github.com/qfdk/EasyDockerWeb

简单说 就是 Jenkins 获取事件 删除旧镜像 打包新镜像 然后 run 起来
guojxx
2018-03-19 14:53:20 +08:00
我不是来回答的,我也是新手
我想了解的是我现在写的 springboot 写的项目部署的话,直接用 jar 部署,配置 nginx 转发。跟你们说的搞 docker 部署差别在哪里,还有 docker 在这一方面体现什么优点。
mikuazusa
2018-03-19 14:56:33 +08:00
当然 Jenkins 啦,用 git hook 绑定,然后写打包、部署自动化脚本,调试好了基本就能用。
“ SpringBoot 端口随机” 这类问题用类似类似 pid 的端口信息文件记录起来,再用脚本处理 Nginx 规则应该就可以了。
HuHui
2018-03-19 15:02:07 +08:00
jenkins 或者 gitlab runner 了解下
Mogugugugu
2018-03-19 15:19:22 +08:00
Jenkins 了解一下,Spring Boot 端口随机这是要求么?通过 Spring Boot 的配置文件指定一个固定端口不可以么? Spring boot 端口不必暴露给宿主机,使 nginx 和 Spring boot 在同一网络下,互相访问就可以。
Solarest
2018-03-19 15:20:00 +08:00
项目配置好 Dockerfile 并选用一个镜像仓库,然后配置 Jenkins、Rancher 进行部署。
retanoj
2018-03-19 16:09:22 +08:00
Rancher API
Luckyray
2018-03-19 16:40:45 +08:00
rancher pipeline 了解一下,很简单
night98
2018-03-19 21:51:25 +08:00
@qfdk 谢谢大佬,这个工具我看看怎么用


@mikuazusa ok,我试试看,另外想问一下内网 gitlab + 内网 jenkins 可以部署到外网服务器吗?


@Mogugugugu 随机端口主要是用于动态扩容用,不过也可以修改 docker 映射到主机上的端口,目前遇到的主要问题是如何动态更新 nginx 的转发规则


@Solarest 好的,正在看
@retanoj 好的,正在看
@Luckyray 好的,正在看
JRay
2018-03-19 23:33:35 +08:00
我是用的 Jenkins 设置好自动部署
th00000
2018-03-20 10:11:34 +08:00
jenkins pipeline 了解一下
mikuazusa
2018-03-20 10:31:50 +08:00
@night98 你 Jenkins 部署在内网,外网开放 Jenkins 访问端口就看而已了,gitlab 没必要部署到外网啊。
不知道你的问题是不是这个意思。
night98
2018-03-20 10:51:57 +08:00
@mikuazusa 是的,但是问题是内网的映射端口,外网 ip 会不定期变化。
mikuazusa
2018-03-20 11:16:56 +08:00
@night98 我理解这类问题就需要类似花生壳的动态域名解析来实现内网穿透了,这类解决方案有免费的也有付费的,你可以找下谷歌看下
jack80342
2018-03-24 19:22:30 +08:00
这几天翻译了最新的 Spring Boot 2.0 的英文文档,欢迎 Fork,https://www.gitbook.com/book/jack80342/spring-boot/details

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

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

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

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

© 2021 V2EX