随笔 - 221  文章 - 0  评论 - 57  阅读 - 162万 

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   玄同太子  阅读(1782)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示