【docker】maven 打包docker的插件学习

docker-maven-plugin

GitHub地址:https://github.com/spotify/docker-maven-plugin

您可以使用此插件创建一个 Docker 映像,其中包含从 Maven 项目构建的工件。例如,Java 服务的构建过程可以输出运行该服务的 Docker 映像。

该插件是 Spotify 使用的最初 Maven 插件,用于从 Java 服务构建 Docker 镜像。它最初创建于 2014 年,当时我们第一次开始尝试 Docker。该插件能够 Dockerfile根据 pom.xml 文件中的配置为您生成图像、使用/FROM添加的资源等。ADDCOPY

随着时间的推移,我们在 Spotify 意识到从 Java 项目构建 Docker 镜像的最简单方法是让开发人员编写Dockerfile. 该插件围绕生成 Dockerfile、将项目目录复制到“暂存”目录以用作 Docker 构建上下文等的行为,最终导致我们的用户产生很多不必要的困惑,这些困惑源于引入额外的抽象和需求用于在 Docker 提供的基础上进行配置。

This repository has been archived by the owner on Mar 21, 2022. It is now read-only.

该存储库已由所有者于 2022 年 3 月 21 日存档。它现在是只读的。

​状态:不活跃,我们建议您改用dockerfile-maven。​

dockerfile-maven

GitHub地址:GitHub - spotify/dockerfile-maven: MATURE: A set of Maven tools for dealing with Dockerfiles

用法:https://github.com/spotify/dockerfile-maven/blob/master/docs/usage.md

This repository has been archived by the owner on Apr 1, 2022. It is now read-only.

该存储库已由所有者于 2022 年 3 月 31 日存档。它现在是只读的。

状态:成熟

目前,我们不会开发或接受新功能,甚至不会修复非关键错误。

这个 Maven 插件将 Maven 与 Docker 集成。

设计目标是:

  • 不要做任何花哨的事情。 Dockerfiles 是构建 Docker 项目的方式;这就是这个插件的用途。它们是强制性的。
  • 使 Docker 构建过程与 Maven 构建过程集成。如果绑定默认阶段,当您键入 时mvn package,您将获得一个 Docker 映像。当您输入 时mvn deploy,您的图像就会被推送。
  • 让目标记住你在做什么。您可以稍后再输入,不会mvn dockerfile:build有任何问题。这也消除了对类似的东西的需要;相反,你可以直接说.mvn dockerfile:tagmvn dockerfile:pushmvn dockerfile:build -DalsoPushmvn dockerfile:build dockerfile:push
  • 与 Maven 构建反应器集成。您可以在另一个项目中依赖一个项目的 Docker 镜像,Maven 会按照正确的顺序构建项目。当您想要运行涉及多个服务的集成测试时,这非常有用。

该插件需要 Java 7 或更高版本以及 Apache Maven 3 或更高版本(dockerfile-maven-plugin <=1.4.6 需要 Maven >= 3,对于其他情况,Maven >= 3.5.2)。要运行集成测试或在实践中使用该插件,需要有效的 Docker 设置。

例子

配置实际的插件来构建您的图像mvn package并使用 推送它mvn deploy。当然你也可以 mvn dockerfile:build明确地说。

<plugin><groupId>com.spotify</groupId><artifactId>dockerfile-maven-plugin</artifactId><version>${dockerfile-maven-version}</version><executions><execution><id>default</id><goals><goal>build</goal><goal>push</goal></goals></execution></executions><configuration><repository>spotify/foobar</repository><tag>${project.version}</tag><buildArgs><JAR_FILE>${project.build.finalName}.jar</JAR_FILE></buildArgs></configuration>
</plugin>

Dockerfile如下所示:

FROM openjdk:8-jreMAINTAINER chengxuyuanshitangENTRYPOINT ["/usr/bin/java", "-jar", "/usr/share/demo/demo.jar"]# Add Maven dependencies (not shaded into the artifact; Docker-cached)
ADD target/lib           /usr/share/demo/libARG JAR_FILE
ADD target/${JAR_FILE} /usr/share/demo/demo.jar

构建生命周期

mvn package
mvn dockerfile:build
mvn verify
mvn dockerfile:push
mvn deploy
Maven 目标
目标描述默认阶段
dockerfile:build从 Dockerfile 构建 Docker 映像。package
dockerfile:tag标记 Docker 映像。package
dockerfile:push将 Docker 映像推送到存储库。deploy
跳过绑定到 Maven 阶段的 Docker 目标
Maven选项它有什么作用?默认值
dockerfile.skip禁用整个 dockerfile 插件;所有目标都变得无效。FALSE
dockerfile.build.skip禁用构建目标;它变成了无操作。FALSE
dockerfile.tag.skip禁用标签目标;它变成了无操作。FALSE
dockerfile.push.skip禁用推送目标;它变成了无操作。FALSE

例如,要跳过整个 dockerfile 插件:

mvn clean package -Ddockerfile.skip
构建阶段
Maven选项它有什么作用?必需的默认值
dockerfile.contextDirectory包含要构建的 Dockerfile 的目录。yesnone
dockerfile.repository用于命名构建镜像的存储库nonone
dockerfile.tag构建 Dockerfile 时要应用的标记,该标记将附加到存储库。nolatest
dockerfile.build.pullNewerImage自动更新基础镜像。noTRUE
dockerfile.build.noCache构建镜像时不要使用缓存。noFALSE
dockerfile.build.cacheFromDocker 镜像用作缓存来源。pullNewerImage如果本地不存在或存在则提前拉取falsenonone
dockerfile.buildArgs自定义构建参数。nonone
dockerfile.build.squash将新构建的层压缩为一个新层(实验 API 1.25+)。noFALSE

下面是最近更新的文章:

【docker 】 安装docker(centOS7)-CSDN博客

【docker】常用命令-CSDN博客

【docker】centos7配置docker镜像加速_docker仓库加速地址-CSDN博客

【docker】Hello World-CSDN博客

【docker 】Compose 使用介绍_docker compose 使用-CSDN博客

【docker 】Compose安装-CSDN博客

【docker 】Dockerfile指令学习-CSDN博客

【docker】网络使用和配置_docker 启动使用host mode-CSDN博客

【docker】数据管理-CSDN博客

【docker】安装openjdk-CSDN博客

【docker】Spring Boot3.x 打包 Docker容器-CSDN博客

【docker】docker compose 搭建私服-CSDN博客

【docker】开放Docker端口-CSDN博客

【docker】maven 打包docker的插件学习-CSDN博客

【docker 】Windows10安装Docker Desktop - WSL update failed-CSDN博客




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/319048.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JAVA进阶篇教学】第九篇:MyBatis-Plus用法介绍

博主打算从0-1讲解下java进阶篇教学&#xff0c;今天教学第九篇&#xff1a;MyBatis-Plus用法介绍。 在 MyBatis-Plus 3.5.0 中&#xff0c;LambdaQueryWrapper支持多种条件构造方式&#xff0c;除了等于&#xff08;eq&#xff09;、不等于&#xff08;ne&#xff09;、大于&a…

【游戏行业】2024年电子游戏分类,国内游戏产业报告,发展趋势

文章目录 一、电子游戏分类1、传统游戏分类2、混合手游分类3、二次元、开放设计、调查问卷 二、游戏产业报告1、游戏产业数据2、游戏公司名单&#xff08;独角兽&#xff09;3、营收与利润&#xff08;对比互联网、国企&#xff09; 三、发展趋势1、游戏行业上下游2、游戏行业趋…

SSM整合-前后端分离-项目环境搭建 (上)

整合SSM 项目基础环境搭建项目介绍创建项目项目全局配置web.xmlSpringMVC配置配置Spring和MyBatis, 并完成整合创建表, 使用逆向工程生成Bean, XxxMapper和XxxMapper.xml注意事项和细节说明 实现功能01-搭建Vue前端工程需求分析/图解代码实现搭建Vue前端工程vue3项目目录结构梳…

力扣例题(接雨水)

链接&#xff1a; . - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 思路&#xff1a; 判断一块地方是否可以接到雨水&#xff0c;只需要判断他是否有左右边界使他可以接到水 左右边界分别为此处左侧的最高点和右侧的最高点 同时此处可接雨水的高度为左右两…

VMware虚拟机安装Linux(CentOS)【超详细】

参考大佬文章&#xff1a;VMware虚拟机安装Linux教程(超详细)_vmware安装linux虚拟机-CSDN博客 目录 一、获取映射文件 二、新建虚拟机 三、安装操作系统 四、切换系统用户 一、获取映射文件 参考大佬文章获取映射文件&#xff0c;以及对应修改后缀名的方法 二、新建虚拟…

C语言实验-学生信息管理系统

按以下菜单界面编写学生信息管理系统&#xff1b; 1&#xff09;录入学生信息首先输入学生人数&#xff0c;然后根据学生人数开辟动态数组&#xff1b; 2&#xff09;学生信息包括学号、姓名、性别、三门课成绩、总分&#xff1b;其中学号、姓名、 性别、三门课成绩是需要从键盘…

[方法] Unity 实现仿《原神》第三人称跟随相机 v1.0

参考网址&#xff1a;【Unity中文课堂】RPG战斗系统Plus 在Unity游戏引擎中&#xff0c;实现类似《原神》的第三人称跟随相机并非易事&#xff0c;但幸运的是&#xff0c;Unity为我们提供了强大的工具集&#xff0c;其中Cinemachine插件便是实现这一目标的重要工具。Cinemachi…

开源的贴吧数据查询工具

贴吧数据查询工具 这是一个贴吧数据查询工具&#xff0c;目前仍处于开发阶段。 本地运行 要本地部署这个项目&#xff0c;请 克隆这个仓库并前往项目目录 git clone https://github.com/Dilettante258/tieba-tools.git cd tieba-tools安装依赖 pnpm install运行项目 np…

240503-关于Unity的二三事

240503-关于Unity的二三事 1 常用快捷键 快捷键描述CtrlP播放/停止Ctrl1打开Scene窗口Ctrl2打开Game窗口Ctrl3打开Inspect窗口Ctrl4打开Hierarchy窗口Ctrl5打开Project窗口Ctrl6打开Animation窗口 2 关联VisualStudio2022 3 节约时间&#xff1a;将最新声明的参数移动到最上…

mysql主库delete一个没主键的表导致从库延迟很久问题处理

一 问题描述 发现线上环境一个从库出现延迟&#xff0c;延迟了2天了&#xff0c;还没追上主库。 查看当前运行的sql及事务&#xff0c;发现这个sql语句是在delete一个没主键的表。 二 问题模拟 这里在测试环境复现下这个问题。 2.1 在主库造数据 use baidd; CREATE TABL…

使用D3.js进行数据可视化

D3.js介绍 D3.js是一个流行的JavaScript数据可视化库&#xff0c;全称为Data-Driven Documents&#xff0c;即数据驱动文档。它以数据为核心&#xff0c;通过数据来驱动文档的展示和操作。D3.js提供了丰富的API和工具&#xff0c;使得开发者能够创建出各种交互式和动态的数据可…

PPT基础

5种ppt仅可读形式 Ⅰ 开始选项卡 1.【幻灯片】组中&#xff1a;新建幻灯片&#xff0c;从大纲中导入幻灯片&#xff1b;修改幻灯片的版式&#xff1b;节&#xff08;新增节&#xff0c;重命名节&#xff09;。 2.【字体】组中&#xff1a;设置字体&#xff0c;字体大小&…

2024年怎么下载学浪app视频

想要在2024年紧跟潮流&#xff0c;成为一名优秀的学浪用户吗&#xff1f;今天就让我们一起探索如何下载学浪app视频吧&#xff01; 学浪视频下载工具打包 学浪下载工具打包链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;1234 --来自百度网盘超级会员V10的分享…

BJFUOJ-C++程序设计-实验2-类与对象

A 评分程序 答案&#xff1a; #include<iostream> #include<cstring>using namespace std;class Score{ private:string name;//记录学生姓名double s[4];//存储4次成绩&#xff0c;s[0]和s[1]存储2次随堂考试&#xff0c;s[2]存储期中考试&#xff0c;s[3]存储期…

推荐一个好用的命令行工具ShellGPT

ShellGPT 配置安装常用功能聊天写命令并执行 高级功能函数调用角色管理 总结 这两天突然想到&#xff0c;现有的很多工具都在被大模型重构&#xff0c;比如诞生了像perplexity.ai 这种新交互形式的搜索引擎&#xff0c;就连wps也推出了AI服务&#xff0c;甚至都可以直接生成ppt…

code-server容器webpack的ws无法连接解决方法

TLDR 通过指定client的wsrul去连接ws devServer.client.webSocketURL ‘wss://<Forwarded uri>/ws’ 拓扑 1、code-server: 用于编写代码、启动webpack dev-server 服务&#xff1b;[https://<domain>:8001] 2、webpack: 用于浏览dev-server服务&#xff1b;[ht…

AI实景直播间的打造指南,简单四步曲,轻松打造24小时不间断直播。

AI实景直播间的打造指南&#xff1a;简单四步曲&#xff0c;轻松打造24小时不间断直播&#xff01; 随着直播时代的来临&#xff0c;ai自动化直播系统成为商家们蓬勃发展的选择。本文将为您介绍如何借助智享ai自动直播&#xff0c;轻松打造一个属于自己的24小时不间断直播间。…

「 网络安全常用术语解读 」SBOM主流格式SWID详解

国际标准化组织&#xff08;ISO&#xff09;和国际电工委员会&#xff08;International Electrotechnical Commission&#xff0c;IEC&#xff09;发布了ISO/IEC 19770-2软件标识&#xff08;Software Identification&#xff0c;SWID&#xff09;标签标准&#xff0c;该标准定…

ctfshow web入门 sql注入 web224--web233

web224 扫描后台&#xff0c;发现robots.txt&#xff0c;访问发现/pwdreset.php &#xff0c;再访问可以重置密码 &#xff0c;登录之后发现上传文件 检查发现没有限制诶 上传txt,png,zip发现文件错误了 后面知道群里有个文件能上传 <? _$GET[1]_?>就是0x3c3f3d60245…

k8s环境prometheus operator监控集群外资源

文章目录 k8s环境添加其他节点基于prometheus operator k8s环境prometheus operator添加node-exporter方式一&#xff1a;通过 ServiceMonitor 方式可以写多个监控node节点运行 external-node.yaml查看资源有没有被创建热更新 外部需要被监控服务器安装 node-exporterdocker 方…