V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
night98
V2EX  ›  Java

Springboot+Docker 自动化部署方案?

  •  
  •   night98 · 2018-03-19 14:47:18 +08:00 · 10234 次点击
    这是一个创建于 2201 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    15 条回复    2018-03-24 19:22:30 +08:00
    qfdk
        1
    qfdk  
       2018-03-19 14:51:35 +08:00 via iPhone   ❤️ 1
    当然有啦 顺便安利个自己的 ui https://github.com/qfdk/EasyDockerWeb

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


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


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


    @Solarest 好的,正在看
    @retanoj 好的,正在看
    @Luckyray 好的,正在看
    JRay
        10
    JRay  
       2018-03-19 23:33:35 +08:00
    我是用的 Jenkins 设置好自动部署
    th00000
        11
    th00000  
       2018-03-20 10:11:34 +08:00
    jenkins pipeline 了解一下
    mikuazusa
        12
    mikuazusa  
       2018-03-20 10:31:50 +08:00
    @night98 你 Jenkins 部署在内网,外网开放 Jenkins 访问端口就看而已了,gitlab 没必要部署到外网啊。
    不知道你的问题是不是这个意思。
    night98
        13
    night98  
    OP
       2018-03-20 10:51:57 +08:00 via Android
    @mikuazusa 是的,但是问题是内网的映射端口,外网 ip 会不定期变化。
    mikuazusa
        14
    mikuazusa  
       2018-03-20 11:16:56 +08:00
    @night98 我理解这类问题就需要类似花生壳的动态域名解析来实现内网穿透了,这类解决方案有免费的也有付费的,你可以找下谷歌看下
    jack80342
        15
    jack80342  
       2018-03-24 19:22:30 +08:00   ❤️ 1
    这几天翻译了最新的 Spring Boot 2.0 的英文文档,欢迎 Fork,https://www.gitbook.com/book/jack80342/spring-boot/details
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5476 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 08:54 · PVG 16:54 · LAX 01:54 · JFK 04:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.