当前位置: 首页 > news >正文

Maven插件打包发布远程Docker镜像

dockerfile-maven-plugin插件的介绍

dockerfile-maven-plugin目前这款插件非常成熟,它集成了Maven和Docker,该插件的官方文档地址如下:
地址:https://github.com/spotify/dockerfile-maven

其他说明:

  • dockerfile是用来构建Docker项目的,这也是该插件所使用的,它们是强制性的。
    将Docker构建过程集成到Maven构建过程中。如果你绑定了默认阶段,当你输入 mvn package 命令时,你将得到一个Docker镜像;当你输入 mvn deploy 命令时,该镜像将会被推送。
  • 在pom.xml文件中使用goals标签声明我们想要做什么。这个里面的配置就相当于我们输入了 mvn dockerfile:build 命令后,再输入 mvn dockerfile:tag 命令,接着再输入 mvn dockerfile:push 命令。
  • 该插件需要Java 7或更高版本和Apache Maven 3或更高版本(dockerfile-maven-plugin <= 1.4.6 需要Maven >= 3,其它情况需要Maven >= 3.5.2)。在实践中要运行集成测试或者使用该插件,需要一个Docker运行环境。

开放远程Docker远程访问端口

# vim /lib/systemd/system/docker.serviceExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2377 -H unix:///var/run/docker.sock在配置项中修改该属性,该方式会直接暴露可以操控docker进程的端口,需要注意安全,修改完后重启docker服务systemctl restart docker

在客户端添加系统环境变量参数

DOCKER_HOST
tcp://xx.xx.xx.xx:2375
在这里插入图片描述

为项目添加插件

父项目pom文件

<properties><dockerfile-maven-plugin.version>1.4.13</dockerfile-maven-plugin.version><docker.image.prefix>registry.xx.cn/xx</docker.image.prefix><dockerfile.skip>false</dockerfile.skip><docker.image.tag>1.0.0</docker.image.tag><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties><plugin><!-- 每个模块不继承此插件依赖 false--><inherited>true</inherited><groupId>com.spotify</groupId><artifactId>dockerfile-maven-plugin</artifactId><version>${dockerfile-maven-plugin.version}</version>
<!--                    <executions>-->
<!--                        <execution>-->
<!--                            <id>default</id>-->
<!--                            <phase>package</phase>-->
<!--                            <goals>-->
<!--                                <goal>build</goal>-->
<!--                                <goal>tag</goal>-->
<!--                            </goals>-->
<!--                            <configuration>-->
<!--                                <tag>${project.version}</tag>-->
<!--                            </configuration>-->
<!--                        </execution>-->
<!--                    </executions>--><configuration><!-- 上下文路径配置,此处设置为项目根路径 用来读取Dockerfile--><contextDirectory>${project.basedir}</contextDirectory><!--使用maven setting认证--><useMavenSettingsForAuth>true</useMavenSettingsForAuth><!-- 镜像仓库用户名 --><username>xxxx</username><!-- 镜像仓库密码 --><password>123456</password><!-- 标记 --><tag>${project.version}</tag><!-- 作为Dockerfile文件传入--><buildArgs><no-cache>true</no-cache><pull>true</pull><!-- <JAR_FILE>target/vp-gateway.jar</JAR_FILE> --></buildArgs><!-- 跳过默认标记 --><skipTag>true</skipTag><!-- 强制创建新标记 --><force>true</force><!-- 输出更详细信息 --><verbose>true</verbose><!-- 跳过插件操作 跳过所有的子模块 全局跳过 --><skip>${dockerfile.skip}</skip><!--关闭缓存--><noCache>true</noCache><!-- 自动更新镜像 --><pullNewerImage>true</pullNewerImage><!-- Dockerfile所在目录路径 --><dockerfile>Dockerfile</dockerfile></configuration>
</plugin>

子模块pom目录

<!-- docker打包插件,groupId、artifactId、version表示插件自生的版本信息 -->
<plugin><groupId>com.spotify</groupId><artifactId>dockerfile-maven-plugin</artifactId><version>${dockerfile-maven-plugin.version}</version><configuration><repository>${docker.image.prefix}/${project.build.finalName}</repository> <!-- 指定镜像构建后要推送的仓库地址 --><!-- 指定构建镜像的版本tag --><tag>${docker.image.tag}</tag><!-- 不跳过 --><skip>false</skip><buildArgs><!--Maven 构建的 jar 包相对路径和名称--><JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE></buildArgs></configuration>
</plugin>

Dockerfile文件

# 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/
FROM  bellsoft/liberica-openjdk-debian:8-cds
#FROM  registry.flow.cn/library/eclipse-temurin:8-jreLABEL maintainer="Zhujj"
ARG APP_NAME=test.jarRUN mkdir -p /appWORKDIR /appCOPY ./target/${APP_NAME}.jar ./app.jar# 环境变量
ENV SERVER_PORT=8080 LANG=C.UTF-8 LC_ALL=C.UTF-8 TZ=Asia/Shanghai JAVA_OPTS="-Xms512m -Xmx2048m"EXPOSE ${SERVER_PORT}ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -Dserver.port=${SERVER_PORT} \# 应用名称 如果想区分集群节点监控 改成不同的名称即可#-Dskywalking.agent.service_name=${APP_NAME} \#-javaagent:/app/skywalking/agent/skywalking-agent.jar-#agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:30005 \-XX:+HeapDumpOnOutOfMemoryError ${JAVA_OPTS} \-jar app.jar

打包发布为远程docker镜像

进入到子模块根目录执行下面的命令:

mvn clean install -Pprod dockerfile:build dockerfile:push -DskipTests

-Pprod 指定profile为prod
发布成功之后就可以在仓库上看到自己的镜像了。


http://www.mrgr.cn/news/79976.html

相关文章:

  • strace,tcmalloc,asan使用
  • jmeter CLI Mode 传参实现动态设置用户数
  • 腾讯微信Android面试题及参考答案(多张原理图)
  • soul Java开发面试题及参考答案
  • 110.【C语言】数据结构之判断是否为完全二叉树
  • erlang 基于jose 实现 aes 加解密
  • 【C++】判断能否被 3, 5, 7 整除问题解析与优化
  • WIN11中安装Mamba常见问题解决方案
  • windows C#-自动实现属性的轻型类
  • Java项目实战II基于Java+Spring Boot+MySQL的社区帮扶对象管理系统的设计与实现(开发文档+数据库+源码)
  • src 和 href 的区别
  • 在AMD Instinct MI300X加速器上训练Transformers和混合模型
  • 深入解析C++中的函数指针与`typedef`的妙用
  • 快速上手Neo4j图关系数据库
  • 测试岗位应该学什么
  • 操作系统(3)操作系统的运行环境
  • 【他山之石】Leading-Trim: The Future of Digital Typesetting:数字排版的未来 —— Leading-Trim
  • 文献分享: PLAID——为ColBERT架构设计的后期交互驱动器
  • 【qt环境配置】windows下的qt与vs工具集安装\版本对应关系
  • 常见LeetCode-Saw200