当前位置: 首页 > 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
发布成功之后就可以在仓库上看到自己的镜像了。

相关文章:

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

dockerfile-maven-plugin插件的介绍 dockerfile-maven-plugin目前这款插件非常成熟&#xff0c;它集成了Maven和Docker&#xff0c;该插件的官方文档地址如下&#xff1a; 地址&#xff1a;https://github.com/spotify/dockerfile-maven 其他说明&#xff1a; dockerfile是用…...

VisualStudio vsix插件自动加载

本文介绍如何在Visual Studio扩展中实现PackageRegistration&#xff0c;包括设置UseManagedResourcesOnly为true&#xff0c;允许背景加载&#xff0c;并针对C#、VB、F#项目提供自动装载&#xff0c;附官方文档链接。增加以下特性即可…… [PackageRegistration(UseManagedRe…...

Codesoft许可管理

在数字化时代&#xff0c;软件许可管理对于确保企业资产安全、优化成本和提高工作效率至关重要。Codesoft作为一款功能强大的标签设计软件&#xff0c;其许可管理功能同样出色。本文将为您介绍如何进行Codesoft的许可管理&#xff0c;确保您的软件投资得到最大回报。 一、了解…...

Unity3D 3D模型/动画数据压缩详解

前言 在Unity3D项目中&#xff0c;3D模型和动画数据通常占用大量内存和存储空间&#xff0c;有效的数据压缩技术对于提升游戏性能和加载速度至关重要。本文将详细介绍Unity3D中3D模型和动画数据的压缩技术&#xff0c;并提供相关的代码实现。 对惹&#xff0c;这里有一个游戏…...

ffmpeg和ffplay命令行实战手册

文章目录 视频拼接用concat视频分段拼接(ffplay 不可调用seek函数进行seek)给视频添加黑边&#xff0c;让视频填充并居中显示不同分辨率视频分段拼接&#xff0c;并且&#xff0c;设置单个视频的缩放比例和摆放位置视频画中画复杂嵌套用overlay(ffplay 可调用seek函数进行seek)…...

基于MobileNet v2模型的口罩实时检测系统实现

基于kaggle数据集训练的模型其实现结果如下&#xff1a; 代码结构如下&#xff1a; 实时口罩检测器&#xff1a; 从导航栏中的链接“实时的口罩检测器”功能&#xff0c;该系统包含一个实时检测用户是否佩戴口罩的功能。基于图片的口罩检测器&#xff1a; 从另一个导航链接“基…...

NEEP-EN2-2023-Section5PartB

题目 个人答案 The chart depicts the outcomes of a survey conducted in a specific university regarding the acquisition of practical activity in class. The chart illustrates that learning knowledges accounts for 91.3 percent, which is the highest percentage…...

PostgreSQL17.x数据库备份命令及语法说明

PostgreSQL17.x数据库备份命令及语法说明 文章目录 PostgreSQL17.x数据库备份命令及语法说明1. 备份命令1. pg_dump命令参数2. pg_dumpall命令参数 2. pg_dump 备份单库语法3. pg_dumpall 备份所有数据库语法4. 备份案例1. pg_dump单库备份2.pg_dumpall单库备份 4. 备份案例1. …...

Java实现一个带头节点的单链表

什么是单链表&#xff1f; 单链表是一种基础的数据结构&#xff0c;其中每个节点都包含两部分&#xff1a; 数据域&#xff1a;存储节点数据。指针域&#xff1a;存储指向下一个节点的引用。 为什么使用头节点&#xff1f; 头节点的存在简化了操作逻辑&#xff1a; 统一操作…...

【图像配准】方法总结

图像配准(Image registration)就是将不同时间、不同传感器&#xff08;成像设备&#xff09;或不同条件下&#xff08;天候、照度、摄像位置和角度等&#xff09;获取的两幅或多幅图像进行匹配、叠加的过程&#xff0c;就是找到1幅图像像素到另1幅图像像素间的空间映射关系它已…...

LabVIEW汽车综合参数测量

系统基于LabVIEW虚拟仪器技术&#xff0c;专为汽车带轮生产中的质量控制而设计&#xff0c;自动化测量和检测带轮的关键参数。系统采用PCIe-6320数据采集卡与精密传感器结合&#xff0c;能够对带轮的直径、厚度等多个参数进行高精度测量&#xff0c;并通过比较测量法判定产品合…...

三相异步电动机没有气压怎么办?

三相异步电动机作为工业和商业应用中最常见的电动机类型之一&#xff0c;广泛应用于各类机械设备及自动化系统中。其运行依赖于电能的转换&#xff0c;然而在某些情况下&#xff0c;可能会出现电动机驱动设备无法获得气压的情况。 一、三相异步电动机工作原理 三相异步电动机…...

软件工程书籍推荐

软件工程推荐这几本书&#xff1a; 1、软件设计的哲学&#xff08;第2版&#xff09; 本书深入探讨了软件设计中的核心问题&#xff1a;如何将复杂的软件系统分 解为可以相对独立实现的模块&#xff08;例如类和方法&#xff09;&#xff0c;从而降低其复杂性并 提高开发效率。…...

验证集和测试集的区别

验证集&#xff08;Validation Set&#xff09;和测试集&#xff08;Test Set&#xff09;在机器学习模型训练过程中扮演着不同的角色&#xff0c;以下是它们之间的主要区别&#xff1a; 目的&#xff1a; 验证集&#xff1a;用于在模型训练过程中调整模型的超参数和做出训练…...

OpenIPC开源FPV之Adaptive-Link天空端代码解析

OpenIPC开源FPV之Adaptive-Link天空端代码解析 1. 源由2. 框架代码3. 报文处理3.1 special报文3.2 普通报文 4. 工作流程4.1 Profile 竞选4.2 Profile 研判4.3 Profile 应用 5. 总结6. 参考资料7. 补充资料7.1 RSSI 和 SNR 的物理含义7.2 信号质量加权的理论依据7.3 实际应用中…...

Next.js流量教程:核心 Web Vitals的改善

更多有关Next.js教程&#xff0c;请查阅&#xff1a; 【目录】Next.js 独立开发系列教程-CSDN博客 目录 引言 1. 什么是 Core Web Vitals&#xff1f; 1.1 Largest Contentful Paint (LCP) 1.2 First Input Delay (FID) 1.3 Cumulative Layout Shift (CLS) 2. 如何优化 …...

百度智能云千帆AppBuilder升级,百度AI搜索组件上线,RAG支持无限容量向量存储!

百度智能云千帆 AppBuilder 发版升级&#xff01; 进一步降低开发门槛&#xff0c;落地大模型到应用的最后一公里。在千帆 AppBuilder 最新升级的 V1.1版本中&#xff0c;企业级 RAG 和 Agent 能力再度提升&#xff0c;同时组件生态与应用集成分发更加优化。 • 企业级 RAG&am…...

构建树莓派温湿度监测系统:从硬件到软件的完整指南

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...

12.11数据结构-图

无向完全图&#xff1a;在无向图中&#xff0c;如果任意两个顶点之间都存在边&#xff0c;则称该图为无向完全图。 有向完全图&#xff1a;在有向图中&#xff0c;如果任意两个顶点之间都存在方向相反的两条弧&#xff0c;则称该图为有向完全图。 含有n个顶点的无向完全图有…...

BERT模型入门(2)BERT的工作原理

文章目录 如名称所示&#xff0c;BERT&#xff08;来自Transformer的双向编码器表示&#xff09;是基于Transformer模型。我们可以将BERT视为只有编码器部分的Transformer。 在上一个主题《Transformer入门》中&#xff0c;我们了解到将句子作为输入喂给Transformer的编码器&a…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...