千家信息网

Dockerfile Maven 插件的使用方法

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容介绍了"Dockerfile Maven 插件的使用方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够
千家信息网最后更新 2026年11月02日Dockerfile Maven 插件的使用方法

本篇内容介绍了"Dockerfile Maven 插件的使用方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Dockerfile Maven 插件使用

这是一个将Docker与Maven无缝集成的Maven插件,可以方便地使用Maven打包Docker image(注意:原来的项目docker-maven-plugin 已经不建议使用)。

设计目标:

  • 不要试图做任何事情。 这个插件使用Dockerfiles构建Docker项目的而且是强制性的。

  • 将Docker构建过程集成到Maven构建过程中。如果绑定默认phases,那么当你键入mvn package时,你会得到一个Docker镜像。 当你键入mvn deploy时,你的图像被push。

  • 让goals记住你在做什么。 你可以输入 mvn dockerfile:build及后面的 mvn dockerfile:build和mvn dockerfile:push 都没有问题。这也消除了之前像 mvn dockerfile:build -DalsoPush这样的命令;相反,你可以只使用 mvn dockerfile:build dockerfile:push。

  • 与Maven build reactor集成。你可以在一个项目中依赖另一个项目所构建的Docker image,Maven将按照正确的顺序构建项目。当你想要运行涉及多个服务的集成测试时,这非常有用。

该项目遵守 Open Code of Conduct.。 参与贡献代码,你需要遵守此代码规则。

查看更新日志以获取发布列表

Set-up

该插件需要Java 7或更高版本以及Apache Maven 3或更高版本。要运行集成测试或在开发中使用该插件,需要有一个能正常工作的Docker。

例子

有关更多示例,请参阅集成测试目录。

特别是,高级测试展示了由两个微服务组成的一套服务,这些服务使用helios-testing进行集成测试。

这将配置插件以使用 mvn package构建映像,并使用 mvn deploy进行推送。 当然你也可以用 mvn dockerfile:build显式构建。

  com.spotify  dockerfile-maven-plugin  ${dockerfile-maven-version}            default              build        push                  spotify/foobar    ${project.version}          ${project.build.finalName}.jar      

相应的Dockerfile可能如下所示

FROM openjdk:8-jreMAINTAINER David Flemström ENTRYPOINT ["/usr/bin/java", "-jar", "/usr/share/myservice/myservice.jar"]# Add Maven dependencies (not shaded into the artifact; Docker-cached)ADD target/lib           /usr/share/myservice/lib# Add the service itselfARG JAR_FILEADD target/${JAR_FILE} /usr/share/myservice/myservice.jar

优点

使用这个插件进行项目构建有很多优点。

更快的构建时间

这个插件让你更好地利用Docker缓存,通过让你在你的image中缓存Maven依赖关系,极大地加速你的构建。 它还鼓励避免 maven-shade-plugin,这也大大加快了构建速度。

一致的构建生命周期

你不再需要像下面这样了:

mvn packagemvn dockerfile:buildmvn verifymvn dockerfile:pushmvn deploy

用下面这一行命令就可以了:

mvn deploy

通过基本配置,这将确保image在正确的时间被构建和push。

依赖其他服务的Docker镜像

你可以依赖另一个项目的Docker信息,因为此插件会在构建Docker镜像时附加项目元数据。 只需将这些信息添加到任何项目中:

  com.spotify  foobar  1.0-SNAPSHOT  docker-info

现在,你可以读取有关你依赖的项目的Docker镜像的信息:

String imageName = getResource("META-INF/docker/com.spotify/foobar/image-name");

这对于需要另一个项目最新版本的Docker镜像的集成测试非常有用。

请注意,你必须在POM(或父POM)中注册Maven extension,才能支持docker-info类型:

            com.spotify      dockerfile-maven-extension      ${version}      

使用其他依赖Dockerfiles的Docker工具

你的项目如下所示:

a/  Dockerfile  pom.xmlb/  Dockerfile  pom.xml

你现在可以使用Fig或docker-compose或其他一些与Dockerfiles配合使用的系统来使用这些项目。 例如,一个docker-compose.yml 可能如下所示:

service-a:  build: a/  ports:  - '80'service-b:  build: b/  links:  - service-a

现在, docker-compose up和docker-compose build 将按预期工作。

身份验证和私有Docker注册中心支持

从版本1.3.0开始,当你pulling, pushing, 或 building images 到private registries中时插件将自动使用 ~/.dockercfg 或 ~/.docker/config.json文件中的配置。

此外,如果插件能够成功加载Google的"应用程序默认凭证",该插件将支持Google Container Registry。 如果已定义,该插件还将从环境变量DOCKER_GOOGLE_CREDENTIALS 指向的文件中加载Google凭据。 由于GCR认证需要为给定凭证检索短期访问代码,因此对此注册表的支持将被融入到基础的docker-client中,而不必在运行插件之前配置docker配置文件。

GCR用户可能需要通过gcloud初始化他们的应用程序默认凭证。 根据插件的运行位置,他们可能希望通过运行以下命令来使用他们的Google identity 。

gcloud auth application-default login

或者改为创建一个service帐户。

使用maven settings.xml进行身份验证

从版本1.3.6开始,你可以使用maven的 settings.xml文件进行身份验证,而不是使用docker配置。 只需添加类似于以下配置:

  docker-repo.example.com:8080/organization/image  latest  true

你也可以在命令行上使用 -Ddockerfile.useMavenSettingsForAuth=true。

然后,在你的maven设置文件中,为服务器添加配置:

      docker-repo.example.com:8080    me    mypassword  

与其他服务器配置完全相同。

使用maven pom.xml进行身份验证

从版本1.3.XX开始,你可以使用pom本身的配置进行身份验证。 只需添加类似于以下配置(经测试,在1.4.0版本中向私有仓库push时会报错 denied: requested access to the resource is denied,所以建议使用maven settings.xml进行身份验证):

    com.spotify    dockerfile-maven-plugin    ${version}            repoUserName        repoPassword        ${docker.image.prefix}/${project.artifactId}                    target/${project.build.finalName}.jar            

或更简单,

    com.spotify    dockerfile-maven-plugin    ${version}            ${docker.image.prefix}/${project.artifactId}                    target/${project.build.finalName}.jar            

用这个命令行调用:

mvn goal -Ddockerfile.username=... -Ddockerfile.password=...

Maven Goals

可用于此插件的Goals :

GoalDescriptionDefault Phase
dockerfile:build从Dockerfile构建Docker镜像。package
dockerfile:tagTag Docker镜像。package
dockerfile:push将Docker镜像推送到repository。deploy

跳过Docker Goals 绑定到Maven phase

你可以将选项传递给maven以禁用 docker goals。

Maven OptionWhat Does that thing Do?
dockerfile.skipDisables the entire dockerfile plugin; all goals become no-ops.
dockerfile.build.skipDisables the build goal; it becomes a no-op.
dockerfile.tag.skipDisables the tag goal; it becomes a no-op.
dockerfile.push.skipDisables the push goal; it becomes a no-op.

例如,跳过整个dockerfile插件:

mvn clean package -Ddockerfile.skip

"Dockerfile Maven 插件的使用方法"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

插件 项目 配置 镜像 版本 测试 身份 服务 验证 命令 文件 运行 支持 代码 信息 凭证 只需 更多 过程 有关 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司经营范围 厦门中拓互联网络科技有限公司 互联网巨头反垄断金融科技 与互联网科技公司 北京互联网科技有限公司 云电互联网科技 互联网金融科技平台 互联网 科技服务平台 深圳卡尔迅互联网科技有限公司怎么样 深圳市运趣互联网科技有限公司 汽车互联网创新科技园 互联网时代科技改变生活 互联网科技有哪些公司 互联网金融中的现代科技 互联网科技商业 如何创新互联网科技 互联网数据科技专业 徐州市互联网科技有限公司 江苏苏星互联网科技有限公司 九思连强互联网电子科技有限公司 科技互联网企业 科技金融是不是互联网金融 汇久创客互联网科技 深圳市运趣互联网科技有限公司 佳云科技和互联网广告 互联网金融中的现代科技 世界互联网领先科技成果获奖 区块链结合互联网科技 上海乐五互联网科技有限公司 北京军民互联网科技公司
0