docker-maven-plugin插件官网地址:https://github.com/spotify/docker-maven-plugin

1、准备一台Linux服务,并安装docker。参考:CentOS安装Docker

当前用于测试的docker版本为20.10.12

2、开启Docker的远程访问端口2375(注意将这个端口添加到防火墙白名单中

修改文件/usr/lib/systemd/system/docker.service,在[Service]->>ExecStart位置添加配置-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

vi /usr/lib/systemd/system/docker.service

-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

执行如下命令重启docker服务

systemctl daemon-reload #重新加载配置
systemctl restart docker #重启docker服务

3、在maven项目中添加插件

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>1.2.2</version>
    <configuration>
        <!-- Dockerfile定义 -->
        <baseImage>openjdk:8-jdk-alpine</baseImage>
        <maintainer>zhi.leaf@foxmail.com</maintainer>
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <directory>${project.build.directory}</directory>
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
        <workdir>/</workdir>
        <entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint>

        <!-- 生成镜像,运行docker:build执行 -->
        <dockerHost>http://192.168.159.130:2375</dockerHost>
        <forceTags>true</forceTags>
        <imageName>zyz/${project.artifactId}</imageName>
        <!-- 设置标签,可以设置多个,如:latest或当前版本号${project.version} -->
        <imageTags>
            <imageTag>${project.version}</imageTag>
        </imageTags>
    </configuration>
</plugin>

参数说明:

     baseImage:基础镜像

     forceTags:覆盖原来的镜像

     dockerHost:docker远程服务主机

4、运行mvn docker:build构建docker镜像

如果出现提示,说明镜像构建成功

登录Linux服务,可以查看到刚才构建的镜像。

6、将构建命令绑定到maven的生命周期中,这样我们就可以在maven打包的时候就可以构建镜像了

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>1.2.2</version>
    <!-- 将Docker命令绑定到Maven的生命周期 -->
    <executions>
        <execution>
            <id>build-image</id>
            <phase>package</phase>
            <goals>
                <goal>build</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
    ...
    </configuration>
</plugin>

 

posted on 2022-03-13 00:45  玄同太子  阅读(1821)  评论(0)    收藏  举报