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

13 篇文章 0 订阅

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

【docker】springboot3.x使用docker-maven-plugin 打包镜像-CSDN博客

【docker 】 IDEA 安装 Docker 工具-CSDN博客

【docker】springboot3.x使用dockerfile-maven-plugin 打包镜像-CSDN博客

【docker】常用的把springboot打包为docker镜像的maven插件-CSDN博客

【docker 】push 镜像到私服-CSDN博客

【docker】常用的Docker私有仓库-CSDN博客

【docker】常用的Docker编排和调度平台-CSDN博客




  • 37
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值