当前位置: 首页 > 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.lryc.cn/news/504765.html

相关文章:

  • VisualStudio vsix插件自动加载
  • Codesoft许可管理
  • Unity3D 3D模型/动画数据压缩详解
  • ffmpeg和ffplay命令行实战手册
  • 基于MobileNet v2模型的口罩实时检测系统实现
  • NEEP-EN2-2023-Section5PartB
  • PostgreSQL17.x数据库备份命令及语法说明
  • Java实现一个带头节点的单链表
  • 【图像配准】方法总结
  • LabVIEW汽车综合参数测量
  • 三相异步电动机没有气压怎么办?
  • 软件工程书籍推荐
  • 验证集和测试集的区别
  • OpenIPC开源FPV之Adaptive-Link天空端代码解析
  • Next.js流量教程:核心 Web Vitals的改善
  • 百度智能云千帆AppBuilder升级,百度AI搜索组件上线,RAG支持无限容量向量存储!
  • 构建树莓派温湿度监测系统:从硬件到软件的完整指南
  • 12.11数据结构-图
  • BERT模型入门(2)BERT的工作原理
  • python3 中的成员运算符
  • 【测试面试篇1】测试开发与开发|selenium实现自动化测试|设计测试用例|常见的测试方法|开发不认可提测试的bug该怎么办
  • 人大金仓数据linux安装注意事项
  • 【Maven】多模块项目的构建
  • 大模型学习笔记------SAM模型详解与思考
  • crictl和ctr与docker的命令的对比
  • SQLite建表语句示例(含所有数据类型、索引、自增主键、唯一索引)
  • 探秘Redis哨兵模式:原理、运行与风险全解析
  • .NET平台使用C#设置Excel单元格数值格式
  • 零基础学安全--wireshark简介
  • [Flutter] : Clipboard