工欲善其事,必先利其器。笔者经过调研,有以下几款Docker的Maven插件进入笔者视野:
从Stars、文档易用性以及更新频率三个纬度考虑,选用了第一款。
1.简单使用
我们以项目:microservice-discovery-eureka为例:
在pom.xml中添加下面这段
执行命令:
我们会发现控制台有类似如下内容:
恭喜,构建成功了。
我们执行docker images 会发现该镜像已经被构建成功:
启动镜像
我们会发现该Docker镜像会很快地启动。
访问测试
访问http://Docker宿主机IP:8761 ,能够正常看到Eureka界面
2.使用Dockerfile进行构建
上文讲述的方式是最简单的方式,很多时候,我们还是要借助Dockerfile进行构建的,首先我们在/microservice-discovery-eureka/src/main/docker目录下,建立文件Dockerfile
修改pom.xml
其他步骤一样。这样即可使用Dockerfile进行构建Docker镜像啦。
3.将Docker镜像push到DockerHub上
首先修改Maven的全局配置文件settings.xml,添加以下段落
在DockerHub上创建repo
项目pom.xml修改为如下:注意imageName的路径要和repo的路径一致
执行命令:
搞定,等构建成功后,我们会发现Docker镜像已经被push到DockerHub上了。
4.将镜像push到私有仓库
在很多场景下,我们需要将镜像push到私有仓库中去,这边为了讲解的全面性,私有仓库采用的是配置登录认证的私有仓库。
和push镜像到DockerHub中一样,我们首先需要修改Maven的全局配置文件settings.xml,添加以下段落
将项目的pom.xml改成如下,
执行:
稍等片刻,将会push成功。
如果想要从私服上下载该镜像,执行:
5.将插件绑定在某个phase执行
在很多场景下,我们有这样的需求,例如执行mvn clean package 时,自动地为我们构建docker镜像,可以吗?答案是肯定的。我们只需要将插件的goal 绑定在某个phase即可。
所谓的phase和goal,可以这样理解:maven命令格式是:mvn phase:goal ,例如mvn package docker:build 那么,package 和 docker 都是phase,build 则是goal 。
下面是示例:
首先配置属性:
插件配置:
如上,我们只需要添加:
即可。本例指的是讲docker的build目标,绑定在package这个phase上。也就是说,用户只需要执行mvn package ,就自动执行了mvn docker:build 。