为了方便为SpringBoot应用构建Docker镜像,我们经常会使用Maven插件来打包镜像。之前一直使用的是第三方插件,有和出品的两种。最近SpringBoot 2.4.0发布了,官方插件也增加了对Docker的支持,体验了一把发现也很好用,推荐给大家!
我们先了解下第三方插件的使用,方便和官方插件做对比,插件使用具体可以参考《还在手动部署SpringBoot应用?试试这个自动化插件!》。
- 值得注意的是,在我们使用插件时,需要自己定义镜像构建过程,比如在中使用如下配置,标签下的配置为镜像构建过程的配置;
- 或者先在Dockerfile文件中定义好镜像构建过程;
- 然后在插件中引用Dockerfile文件,用于构建镜像;
- 其实对于SpringBoot应用来说,如何从应用Jar包构建Docker镜像,做法基本是差不多的,为什么非要自己定义镜像的构建过程呢?
SpringBoot官方插件解决了上面的问题,无需自己编写Docker镜像构建过程,直接自动构建,是不是很方便!接下来我们来体验下它的强大之处!
- 由于我们需要把镜像推送到镜像仓库,首先我们安装好私有镜像仓库和可视化镜像管理工具,具体可以参考《还在手动部署SpringBoot应用?试试这个自动化插件!》;
- 然后我们需要把应用的版本升级到SpringBoot 2.4.0,之前的版本Docker支持没有这个完善;
- 然后修改文件,对官方Maven插件进行配置,主要是对Docker相关功能进行配置;
- 如果你使用的是IDEA的话,直接双击SpringBoot插件的命令即可一键打包并推送到镜像仓库;
- 也可以在命令行使用如下Maven命令来打包构建镜像;
- 镜像构建过程中会输出如下信息,由于很多依赖会从Github上下载,网络不好的情况下会下载失败,多试几次就好:
- 镜像构建成功后,可以从镜像仓库查看到我们的镜像:
- 我们可以从中查看镜像仓库中的镜像,访问地址:http://192.168.3.101:8280/
- 接着使用如下命令启动我们的SpringBoot应用:
- 启动成功后,可以成功访问到SpringBoot应用的Swagger页面,访问地址:http://192.168.3.101:8080/swagger-ui.html
SpringBoot官方Maven插件避免了编写Docker镜像构建过程,同时充分利用了SpringBoot 2.3以后的Jar分层技术,但对于需要自定义构建镜像的场景造成了一定的麻烦。
官方文档:docs.spring.io/spring-boot…
github.com/macrozheng/…