栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java > SpringBoot

Maven一键部署Springboot到Docker仓库,为自动化做准备

SpringBoot 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Maven一键部署Springboot到Docker仓库,为自动化做准备

1 前言

前面《Springboot整合MongoDB的Docker开发,其它应用也类似》讲解了如何做Docker开发、如何把Springboot应用打包成一个镜像,但它是手动的,本文将讲解如何通过maven一键打包部署。

2 两个maven插件搞定

可以使用maven插件实现一键部署,这两个插件还是同一个公司的产品,就是著名的音乐流服务平台Spotify。

2.1 spotify/docker-maven-plugin 2.1.1 基础用法

该插件可以实现镜像打包和push到仓库,无Dockerfile和有Dockerfile两种方式都可以,建议使用Dockerfile,更灵活。在maven的pom.xml文件加入以下插件配置:


  com.spotify
  docker-maven-plugin
  1.2.2
  
    pkslow/springboot-mongo
    
      ${imageVersion}
      latest
    
    
    true
    ${project.basedir}
    
      
 /
 ${project.build.directory}
 ${project.build.finalName}.jar
      
    
  

  • imageName:这是镜像名称;

  • imageTags:标签,支持多标签,即同一个镜像文件多个标签;我指定了一个参数imageVersion,可以命令行传入,方便后续整合Jenkins。

  • forceTags:是否覆盖原有标签;

  • dockerDirectory:Dockerfile文件所在的位置;而且该目录下的所有文件都会被复制到${project.build.directory}/docker。因为我的Dockerfile放在项目根目录,所以整个项目的文件都复制过去了,包括源代码等。不得不吐槽一下这个设计,这是在强迫大家换个位置放Dockerfile吗?

  • resources:用来添加dockerDirectory外的其它资源文件。

添加后,通过以下命令执行:

$ mvn clean package docker:build -DimageVersion=0.0.4

通过命令docker images查看成功,运行也正常。

通过下面命令可以push到registry:

mvn clean package docker:build -DpushImage

mvn clean package docker:build -DpushImageTag
2.1.2 与maven生命周期绑定

可以通过添加executions配置实现与maven生命周期的绑定。


  com.spotify
  docker-maven-plugin
  VERSION GOES HERE
  
    
      build-image
      package
      
 build
      
    
    
      tag-image
      package
      
 tag
      
      
 my-image:${project.version}
 registry.example.com/my-image:${project.version}
      
    
    
      push-image
      deploy
      
 push
      
      
 registry.example.com/my-image:${project.version}
      
     
  

有了这些绑定配置后,要打包镜像,直接mvn clean package即可。

2.1.3 仓库登陆信息配置

首先,插件可以使用配置在本地 ~/.dockercfg 或 ~/.docker/config.json的验证信息,或者可以显式地配置在maven上。

如配置在settings.xml文件:


  
    docker-hub
    foo
    secret-password
    
      foo@foo.bar
    
  

密码是可以加密的,详情请查看: Maven’s built in encryption function 。

在项目的pom.xml中使用:


  
    com.spotify
    docker-maven-plugin
    VERSION GOES HERE
    
      [...]
      docker-hub
      https://index.docker.io/v1/
    
  

2.2 spotify/dockerfile-maven 2.2.1 更简洁的插件

因为docker-maven-plugin有一些Bugs,所以Spotify开发了更方便简洁的插件dockerfile-maven。

dockerfile-maven-plugin的配置更简单:


  com.spotify
  dockerfile-maven-plugin
  ${dockerfile-maven-version}
  
    
      default
      
 build
 push
      
    
  
  
    spotify/foobar
    ${project.version}
    
      ${project.build.finalName}.jar
    
  

配置好后,执行以下maven命令即可打包成镜像并推送到仓库:

mvn deploy
2.2.2 仓库验证

账号可以配置在pom.xml中,如下:


    com.spotify
    dockerfile-maven-plugin
    ${version}
    
 repoUserName
 repoPassword
 ${docker.image.prefix}/${project.artifactId}
 
     target/${project.build.finalName}.jar
 
    

当然,也可以配置在maven的配置文件settings.xml中,这样更安全,请参考:https://github.com/spotify/dockerfile-maven/blob/master/docs/authentication.md

3 总结

通过maven插件,可以快速方便地一键打包、部署,非常方便,对后续的整个DevOps整合也是很有益的。

参考资料:

docker-maven-plugin:https://github.com/spotify/docker-maven-plugin

dockerfile-maven:https://github.com/spotify/dockerfile-maven


欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章!

多读书,多分享;多写作,多整理。

欢迎大家关注、分享。

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号