在上一章《maven构建docker镜像三部曲之二:编码和构建镜像》的实战中,我们将spring boot的web工程构建成docker镜像并在本地启动容器成功,今天我们把docker-maven-plugin插件的推送功能也用上,这样编译、构建、推送都能一次性完成了;
源码和环境
本次实战的java web工程源码和环境都沿用上一章的,源码我已经上传到github上,地址是:git@github.com:zq2599/blog_demos.git,浏览器访问地址是:https://github.com/zq2599/blog_demos,这里面有多个工程,本次实战用到的是mavendockerplugindemo,如下图红框所示:
把构建的镜像推送到哪里去
本次实战有以下两个地方可以存放镜像,我们每个都要试试:
内网中,自己搭建的docker私有仓库;
阿里云的镜像仓库;
接下来我们分别推送到上述两个仓库,先推送到内网的私有仓库吧。
如何搭建内网的私有仓库
在内网搭建和使用私有仓库的详细步骤,请看《docker私有仓库搭建与使用实战》,就不在此赘述了;
用于编译和构建镜像的虚拟机上,记得配置/etc/default/docker和/lib/systemd/system/docker.service文件,使docker服务可以在http协议下工作,否则无法推送到内网私有仓库;
pom配置信息
用SecureCRT登录虚拟机,在工程的目录下新建一个pom_3_inner_server.xml文件,内容和pom_1_by_param.xml文件的一模一样,然后对pom_3_inner_server.xml文件做下列修改:
新增registryUrl节点,内容是私有仓库地址和端口,如下:192.168.119.148:5000
新增pushImage节点,内容如下:true
修改imageName节点的内容,改为私有仓库地址和端口,再加上镜像id和TAG,如下:192.168.119.148:5000/${project.artifactId}:${project.version}
执行以下命令开始构建:
mvn -f pom_3_inner_server.xml clean package -DskipTests docker:build
构建完毕后发现输出了报错信息,如下:
[INFO] Building image 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT
Step 1/3 : FROM java:8u111-jdk
---> d23bdf5b1b1b
Step 2/3 : ADD /mavendockerplugindemo-0.0.1-SNAPSHOT.jar //
---> 634afbb47de5
Removing intermediate container 8c165fad6a2c
Step 3/3 : ENTRYPOINT java -jar /mavendockerplugindemo-0.0.1-SNAPSHOT.jar
---> Running in 1840b6345566
---> ff415c0f2d72
Removing intermediate container 1840b6345566
Successfully built ff415c0f2d72
[INFO] Built 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT
[INFO] Tagging 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT with 0.0.1-SNAPSHOT
[INFO] Pushing 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT
The push refers to a repository [192.168.119.148:5000/mavendockerplugindemo]
[WARNING] Failed to push 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT, retrying in 10 seconds (1/5).
[INFO] Pushing 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT
The push refers to a repository [192.168.119.148:5000/mavendockerplugindemo]
[WARNING] Failed to push 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT, retrying in 10 seconds (2/5).
[INFO] Pushing 192.168.119.148:5000/mavendockerplugindemo:0.0.1-SNAPSHOT