使用Maven插件构建Docker镜像
来源:互联网 发布:香港自由行攻略 知乎 编辑:程序博客网 时间:2024/05/21 01:52
1.7 Docker与微服务-使用Maven插件构建Docker镜像
- 7 Docker与微服务-使用Maven插件构建Docker镜像
- 工具
- 使用插件构建Docker镜像
- 简单使用
- 使用Dockerfile进行构建
- 将Docker镜像push到DockerHub上
- 将镜像push到私有仓库
- 将插件绑定在某个phase执行
- 常见异常
- 连接不上2375一般在Win7上出现
- TIPS
- 代码地址任选其一
- 参考文档
工具
工欲善其事,必先利其器。笔者经过调研,有以下几款Docker的Maven插件进入笔者视野:
笔者从Stars、文档易用性以及更新频率三个纬度考虑,选用了第一款。
使用插件构建Docker镜像
简单使用
我们以之前的项目:microservice-discovery-eureka为例:
- 在pom.xml中添加下面这段
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 执行命令:
- 1
- 我们会发现控制台有类似如下内容:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
恭喜,构建成功了。
- 我们执行
docker images
会发现该镜像已经被构建成功:
- 1
- 2
- 启动镜像
- 1
我们会发现该Docker镜像会很快地启动。
- 访问测试
访问http://Docker宿主机IP:8761 ,能够正常看到Eureka界面。
使用Dockerfile进行构建
上文讲述的方式是最简单的方式,很多时候,我们还是要借助Dockerfile进行构建的,首先我们在/microservice-discovery-eureka/src/main/docker目录下,建立文件Dockerfile
- 1
- 2
- 3
- 4
- 5
- 6
修改pom.xml
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
其他步骤一样。这样即可使用Dockerfile进行构建Docker镜像啦。
将Docker镜像push到DockerHub上
- 首先修改Maven的全局配置文件settings.xml,添加以下段落
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 在DockerHub上创建repo,例如:test,如下图
- 项目pom.xml修改为如下:注意imageName的路径要和repo的路径一致
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 执行命令:
- 1
- 搞定,等构建成功后,我们会发现Docker镜像已经被push到DockerHub上了。
将镜像push到私有仓库
在很多场景下,我们需要将镜像push到私有仓库中去,这边为了讲解的全面性,私有仓库采用的是配置登录认证的私有仓库。
- 和push镜像到DockerHub中一样,我们首先需要修改Maven的全局配置文件settings.xml,添加以下段落
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 将项目的pom.xml改成如下,
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 执行:
- 1
稍等片刻,将会push成功。
- 如果想要从私服上下载该镜像,执行:
- 1
- 2
将插件绑定在某个phase执行
在很多场景下,我们有这样的需求,例如执行mvn clean package
时,自动地为我们构建docker镜像,可以吗?答案是肯定的。我们只需要将插件的goal
绑定在某个phase即可。
所谓的phase和goal,可以这样理解:maven命令格式是:mvn phase:goal
,例如mvn package docker:build
那么,package
和docker
都是phase,build
则是goal 。
下面是示例:
首先配置属性:
- 1
- 2
- 3
插件配置:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
如上,我们只需要添加:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
即可。本例指的是讲docker的build目标,绑定在package这个phase上。也就是说,用户只需要执行mvn package
,就自动执行了mvn docker:build
。
常见异常
连接不上2375(一般在Win7上出现)
- 1
解决步骤:
- 输入
docker-machine env
- 1
- 2
- 3
- 为插件添加配置
- 1
- 2
修改后插件配置变为:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 参考:https://github.com/spotify/docker-maven-plugin/issues/116
TIPS
- imageName必须符合正则[a-z0-9-_.],否则将会构建失败
- 插件默认使用localhost:2375去连接Docker,如果你的Docker端口不是2375,需要配置环境变量
DOCKER_HOST=tcp://<host>:2375
代码地址(任选其一)
https://git.oschina.net/itmuch/spring-cloud-study/tree/master/docker/microservice-discovery-eureka
https://github.com/eacdy/spring-cloud-study/tree/master/docker/microservice-discovery-eureka
参考文档
http://developer.51cto.com/art/201404/434879.htm
https://linux.cn/article-6131-rss.html
- 使用Maven插件构建Docker镜像
- 使用Maven 插件构建docker 镜像和推送仓库
- 1.7 Docker与微服务-使用Maven插件构建Docker镜像
- 使用docker构建镜像
- Docker:使用Jenkins构建Docker镜像
- Docker-- 如何使用Dockerfile构建镜像
- 如何使用Dockerfile构建Docker镜像
- Docker:使用多阶段构建镜像
- Docker构建镜像
- 【Docker】Docker构建镜像
- 通过Jenkins构建maven项目的Docker镜像
- maven构建docker镜像三部曲之一:准备环境
- Docker--docker使用及自定义Dockerfile构建镜像
- jenkins构建Docker 镜像(基于Jenkins的Docker镜像及Jenkins插件)
- jenkins构建Docker 镜像(基于Jenkins的Docker镜像及Jenkins插件)
- maven构建docker镜像三部曲之二:编码和构建镜像
- Docker 构建redis镜像
- Docker 构建Tomcat镜像
- 第6章 电力窃漏电用户自动识别
- Kubernetes 的证书认证
- JavaScript基础之Node.js与stream
- Fragment之间的切换
- 使用node连接mySQL,封装自定义模块供外部调用
- 使用Maven插件构建Docker镜像
- android连接蓝牙相关问题及解决方法
- 基于jquery开发的UI框架有哪些
- Cannot use a scalar value as an array?
- 面向对象第二个特征----继承II(什么时候使用继承)
- Cyclical Quest CodeForces
- shell中$(( )) 与 $( ) 还有${ }的区别
- html网页制作
- JMeter接口测试实战-创建JMeter脚本