io.fabric8:docker-maven-plugin
插件在多模块之下使用首先安装好docker容器,会自动生成文件/usr/lib/systemd/system/docker.service
开启docker远程服务
编辑文件
vi /usr/lib/systemd/system/docker.service
找到,ExecStart,添加 -H tcp://0.0.0.0:2375
(为该值),修改其值为下
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock
重启加载配置,重启服务
systemctl daemon-reload
systemctl restart docker
在需要使用该插件的模块中引入插件,一般是在API的模块
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.33.0</version>
....
</plugin>
使用内部配置,进行生成容器的配置(不能使用外部Dockerfile,多项目下配置的拷贝路径有问题),如下:
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.33.0</version>
<configuration>
<!--第一步开启的docker远程服务-->
<dockerHost>tcp://localhost:2375</dockerHost>
<verbose>true</verbose>
<images>
<image>
<!--镜像名称,按需填写-->
<name>ted005/protacol</name>
<alias>${project.version}</alias>
<build>
<!--相当于Dockerfile中的from -->
<from>openjdk:12</from>
<!--相当于Dockerfile中的volume -->
<volumes>
<volume>/tmp</volume>
</volumes>
<!--相当于Dockerfile中的workdir -->
<workdir>.</workdir>
<!--相当于Dockerfile中的entryPoint -->
<entryPoint>
<exec>
<arg>java</arg>
<arg>-jar</arg>
<arg>server.jar</arg>
</exec>
</entryPoint>
<assembly>
<!--生成的模式,默认为dir-->
<mode>dir</mode>
<!--输出的目录,在镜像容器中的位置及编译生成的jar文件名称-->
<targetDir>/server.jar</targetDir>
<!---->
<descriptorRef>project</descriptorRef>
</assembly>
</build>
</image>
</images>
</configuration>
</plugin>
可参考帮助文档官网:http://dmp.fabric8.io/
运行命令
#在父目录中运行打包
mvn clean package
#切换进入API所在的目录,需要生成的容器,并编译
mvn docker:build