准备工作
操作系统版本
[root@node02 ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
docker版本
[root@node02 ~]# docker -v
Docker version 18.06.3-ce, build d7080c1
目前我在本地vmware虚拟机里已经安装了docker registry私有仓库(192.168.126.99),具体步骤可以参考 :
【安装私有镜像仓库-docker-registry+docker-registry-web(镜像仓库+镜像仓库管理界面)】
开启docker仓库相关API(端口)
开通相关api是通过修改docker私有仓库所在机器配置文件实现的
vi /usr/lib/systemd/system/docker.service
在 ExecStart 配置后添加:
-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
表示开启2375端口,最终如下(注意空格):
在docker api所在服务器上配置私有仓库的地址
vi /etc/docker/daemon.json
添加私有仓库地址:
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://kn0t2bca.mirror.aliyuncs.com"],
"insecure-registries": [ "192.168.126.99:5000"]
}
根据实际情况添加:insecure-registries配置,如果不配置会导致push失败 (我这里docker api和docker registry在同一台机器上 即192.168.126.99)
重启docker
systemctl daemon-reload
systemctl restart docker
验证
netstat -ano |grep 2375
或者访问连接
curl 127.0.0.1:2375/info
这样就表示api开启成功了
重启私有仓库(docker-compuse方式),由于刚刚重启了docker,所以需要重启registry镜像
[root@registry ~]# docker-compose -f registry.yml -f web.yml up -d
Starting registry_web ... done
Starting registry ... done
maven插件编写
编写通过 docker-maven-plugin 插件
<build>
<plugins>
<!-- spring-boot-maven-plugin -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 启动主类-->
<mainClass>com.xx.EurekaServerApp</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<!--docker-maven-plugin start-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.1.0</version>
<configuration>
<!--仓库地址-->
<registryUrl>192.168.126.99:5000</registryUrl>
<!--docker api地址,构建镜像是通过api调用在192.168.126.99上构建,并推送到registryUrl上-->
<dockerHost>http://192.168.126.99:2375</dockerHost>
<!--镜像名称-->
<imageName>192.168.126.99:5000/${project.artifactId}:${project.version}</imageName>
<!--tag
<imageTags>
<imageTag>${project.version}</imageTag>
<imageTag>latest</imageTag>
</imageTags>
-->
<!--基础镜像-->
<baseImage>java:8</baseImage>
<!--启动容器里执行的命令-->
<entryPoint>["java", "‐jar","/${project.build.finalName}.jar"]</entryPoint>
<!--是否推送镜像-->
<pushImage>true</pushImage>
<!--推送后是否覆盖已存在的标签镜像-->
<forceTags>true</forceTags>
<!--资源,类似Dockerfile里的 ADD -->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
<!--docker-maven-plugin end-->
</plugin>
</plugins>
</build>
构建、 推送
docker 推送前必须保证本地jar包已经打包好
docker:build日志
在docker-registry-web上查看(docker-registry-web部署可以查看我上一篇【Docker之用docker-compose安装registry和docker-registry-web私有仓库和仓库前端】)
pom配置文件上传到了 【gitee】 https://gitee.com/aqu415/demo/tree/master/springcloud/eurekaserver-8001
over~