【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-jre

MAINTAINER chengxuyuanshitang

ENTRYPOINT ["/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/lib

ARG 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博客




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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【跟马少平老师学AI】-【神经网络是怎么实现的】(九)长短期记忆网络

一句话归纳&#xff1a; 1&#xff09;RNN也会存在梯度消失的问题。 2&#xff09;同一句话&#xff0c;对于不同的任务&#xff0c;句中不同的词起的作用也不一样。 3&#xff09;LSTM&#xff08;长短期记忆&#xff09;子网络&#xff1a; 门&#xff0c;让输入经过运算&…

附录6-4 黑马优购项目-分类和购物车

目录 1 分类 1.1 接口 1.2 窗口限制 1.3 选中状态样式判断 1.4 点击左侧时右侧会到顶点 1.5 源码 2 购物车 2.1 store 2.2 tabBar徽标 2.3 滑动删除 2.4 结算 2.4.1 结算前登录 2.4.2 结算功能 2.5 触发组件事件 2.6 源码 1 分类 分类最上部是…

Android手写自己的路由SDK

实现自己的路由框架 ​ 在较大型的Android app中常会用到组件化技术&#xff0c;针对不同的业务/基础功能对模块进行划分&#xff0c;从上到下为壳工程、业务模块、基础模块。其中业务模块依赖基础模块&#xff0c;壳工程依赖业务模块。同级的横向模块&#xff08;比如多个业务…

使用Nuxt3框架搭建基础项目

Nuxt3安装 基础配置: Node.js** - v18.0.0版本以上 , 可以结合fnm工具切换node版本 安装nuxt3命令 打开vscode或者控制台去到项目文件夹输入: npx nuxilatest init <project-name> 国内执行这行代码&#xff0c;即使科学上网也会有问题 ⚠️ 安装Nuxt3报错 安装过程…

数据分析--客户价值分析RFM(K-means聚类/轮廓系数)

原数据 import os import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from sklearn import metrics ### 数据抽取&#xff0c;读⼊数据 df pd.read_csv("customers1997.csv") #相对路径读取数据 print(df.info()) pr…

如何定时打开网站

首先&#xff0c;需要用到的这个工具&#xff1a; 度娘网盘 提取码&#xff1a;qwu2 蓝奏云 提取码&#xff1a;2r1z 1、打开工具按下Ctrl3&#xff0c;切换到定时器模块&#xff0c;左侧右键&#xff0c;选择新建 2、标题叫百度&#xff0c;等下就让它打开百度&#xff0c…

Spring - 6 ( 9000 字 Spring 入门级教程 )

一&#xff1a; SpringBoot 配置文件 1.1 配置文件作用 配置文件通常是一个文本文件&#xff0c;其中包含了程序或系统的各种设置、选项和参数。比如C:\Users, C:\Windows 文件夹, 以及各种 .config, .xml 文件 配置文件主要是为了解决硬编码&#xff08;代码写死&#xff0…

排序算法--希尔排序

前提&#xff1a; 排序算法——直接插入排序-CSDN博客 希尔排序(Shell Sort)是插入排序的一种。是直接插入排序算法的Plus版。该方法又称缩小增量排序&#xff0c;是D.L.Shell于1959年提出。要想学好希尔排序&#xff0c;直接插入排序一定要学好&#xff0c;没学过的&#xff0…

chrome extension插件替换网络请求中的useragent

感觉Chrome商店中的插件不能很好的实现自己想要的效果,那么就来自己动手吧。 本文以百度为例: 一般来说网页请求如下: 当前使用的useragent是User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safar…

【Flask 系统教程 4】Jinjia2模版和语法

Jinjia2 模板 模板的介绍 Jinja2 是一种现代的、设计优雅的模板引擎&#xff0c;它是 Python 的一部分&#xff0c;由 Armin Ronacher 开发。Jinja2 允许你在 HTML 文档中嵌入 Python 代码&#xff0c;以及使用变量、控制结构和过滤器来动态生成内容。它的语法简洁清晰&#…

java发送请求2次开发-get请求json

因为你请求参数不为空&#xff0c;接口都会把这个参数带上 所以借鉴HttpPost类 继承这个类&#xff0c; 这个类是可以带消息的 httpgetwithentity&#xff0c;httpget请求带上消息 复写 构造方法复制过来进行使用 二次开发类让其get请求时可以发送json

IOS上线操作

1、拥有苹果开发者账号 2、配置证书&#xff0c;进入苹果开发者官网&#xff08;https://developer.apple.com/&#xff09; 3、点击账户&#xff08;account&#xff09;&#xff0c;然后创建一个唯一的标识符 4、点击"Identifiers"&#xff0c;然后点击"&qu…

SpringBoot的ProblemDetails

1.RFC 7807 之前的项目如果出现异常&#xff0c;默认跳转到error页面。或者是抛出500 异常。 但是对于前后端分离的项目&#xff0c;Java程序员不负责页面跳转&#xff0c;只需要 把错误信息交给前端程序员处理即可。而RFC 7807规范就是将异常 信息转为JSON格式的数据。这个…

android init进程启动流程

Android系统完整的启动流程 android 系统架构图 init进程的启动流程 init进程启动服务的顺序 bool Service::Start() {// Starting a service removes it from the disabled or reset state and// immediately takes it out of the restarting state if it was in there.flags_…

每天五分钟深度学习框架pytorch:如何创建多维Tensor张量元素?

本文重点 上节课程我们学习了如何创建Tensor标量,我们使用torch.tensor。本节课程我们学习如何创建Tensor向量,我们即可以使用torch.Tensor又可以使用torch.tensor,下面我们看一下二者的共同点和不同点。 Tensor张量 tensor张量是一个多维数组,零维就是一个点(就是上一…

llama-factory/peft微调千问1.5-7b-chat

目标 使用COIG-CQIA数据集和通用sft数据集对qwen1.5-7b-chat进行sft微调,使用公开dpo数据集进行dpo对齐。学习千问的长度外推方法。 一、训练配置 使用Lora方式, 将lora改为full即可使用全量微调。 具体的参数在 该框架将各个参数、训练配置都封装好了,直接使用脚本,将数…

毫米波雷达多人呼吸心跳检测MATLAB仿真

本文基于TI的IWR1642毫米波雷达 2T4R MIMO阵列&#xff0c;通过实际采集数据算法仿真&#xff0c;实现多人呼吸心跳检测。 文章末尾给出了本文的仿真代码。 主要内容包含&#xff1a; &#xff08;1&#xff09;雷达参数设定 &#xff08;2&#xff09;ADC数据导入 &#xff08…

Windows Server 安全策略配置

前言 Windows Server是由微软开发的一种操作系统&#xff0c;主要用于在企业或机构的服务器上运行。它提供了一系列的功能和工具&#xff0c;旨在提高服务器的性能、可靠性、安全性和管理性。 特点 强大的性能&#xff1a;Windows Server具有高度优化的内核和资源管理&#x…

【MySQL | 第十篇】重新认识MySQL索引匹配过程

文章目录 10.重新认识MySQL索引匹配过程10.1匹配规则10.2举例&#xff1a;联合索引遇到范围查询&#xff08;>、<、between、like&#xff09;10.2.1例子一&#xff1a;>10.2.2例子二&#xff1a;>10.2.3例子三&#xff1a;between10.2.4例子四&#xff1a;like 10…

SQL数据库

一.什么是数据库 数据库&#xff1a;存储数据的仓库&#xff0c;数据是有组织的进行存储。&#xff08;database 简称DB&#xff09; 数据库管理系统&#xff1a;管理数据库的大型软禁&#xff08;DataBase Management System 简称DBMS&#xff09; SQL&#xff1a;操作关系…