DockerMaven插件
插件官方地址:
https://github.com/spotify/dockerfile-maven
项目部署有两种方法:
(1)手动部署:首先基于源码打包生成jar包(或war包),将jar包(或war包)上传至虚拟机并拷贝至JDK容器。
(2)通过Maven插件自动部署。
对于数量众多的项目,手动部署无疑是非常麻烦的做法,并且容易出错。所以我们这里学习如何自动部署,这也是企业实际开发中经常使用的方法。
使用该插件时,有一些注意事项
-
该插件依赖一台装有Docker daemon的Host完成镜像的构建
-
由于该插件需要访问Docker Host,因此要求Docker Host打开TCP管理端口,并允许访问
-
使用该插件的机器需要配置
DOCKER_HOST
选项,指向Docker Host对应端口 -
该插件构建和发布镜像依赖于镜像仓库,需要用户提供镜像仓库的登录信息,支持POM设置和Settings设置
Maven插件自动部署步骤:
(1)修改宿主机的docker配置,让其可以远程访问
vi /lib/systemd/system/docker.service
其中ExecStart=后添加配置-H tcp://0.0.0.0:2375
开启远程API访问端口
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
( 2)刷新配置,重启服务
#重新加载配置
systemctl daemon-reload
#重启docker
systemctl restart docker
#重启私有仓库
docker start registry
#开放2375端口
firewall-cmd --permanent --add-port=2375/tcp
#重启防火墙
firewall-cmd --reload
#测试是否配置成功
curl http://127.0.0.1:2375/version
(3)修改1 pom.xml 本机不需要安装docker,直接连接服务器操作
这种方式不需要dockerfile直接生成一个dockerfile
<!-- docker的maven插件,官网:https://github.com/spotify/docker-maven-plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>192.168.222.100:5000/${project.artifactId}</imageName>
<baseImage>centos</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<dockerHost>http://192.168.222.100:2375/</dockerHost>
</configuration>
</plugin>
在命令控制台运行如下的命令,即可完成生成镜像并且上传到私有仓库
mvn clean package docker:build -DpushImage
上述命令的解析如下:
mvn clean package`:maven打jar包
docker:build docker构建镜像的命令
-DpushImage 将生成的镜像上传到私有仓库中
(3)修改2 pom.xml 本机需要安装docker,连接本机docker客户端操作
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.3.4</version>
<configuration>
<repository>192.168.222.100:5000/demo</repository>
</configuration>
</plugin>
修改docker for window
加以下内容,保存退出。
将私有仓库添加信任,这样才能上传镜像到私有仓库。
{
"registry-mirrors": ["https://72idtxd8.mirror.aliyuncs.com"]
"insecure-registries":["192.168.222.100:5000"]
}
此步用于让 docker信任私有仓库地址
然后执行插件。
在实际开发中,我们不太用这种插件模式。
基本上都是在打包服务器,通过Jenkins自动化工具,来操作自动生成docker镜像。