dockerfile-maven-plugin使用指南小结

目录
  • pom配置
  • setting.xml配置
  • 登录情况
    • 需要登录
    • 无需登录
  • maven多模块情况配置
  • jenkins
    • jenkins服务器安装docker
    • 修改jenkins项目配置

最近在将应用部署到容器平台,需要在打包时生成docker镜像,在网上首先搜到了docker-maven-plugin这个插件,但使用起来很麻烦,在maven和dockfile都要做很多额外的配置。后来在官方Github看到作者推荐使用dockerfile-maven-plugin这个新的插件,于是替换成这个,但这个插件在网上的相关资料较少。在此记录一哈

pom配置

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>

            <!-- Dockerfile maven plugin -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.10</version>
                <executions>
                    <!--<execution>-->
                        <!--<id>default</id>-->
                        <!--<goals>-->
                            <!--&lt;!&ndash;如果package时不想用docker打包,就注释掉这个goal&ndash;&gt;-->
                            <!--<goal>build</goal>-->
                            <!--<goal>push</goal>-->
                        <!--</goals>-->
                    <!--</execution>-->
                </executions>
                <configuration>
                    <repository>docker-reg.****.com/feedback/${artifactId}-${profiles.active}</repository>
                    <tag>${project.version}</tag>
                    <buildArgs>
                        <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                    </buildArgs>
                </configuration>
            </plugin>

setting.xml配置

这个文件在maven目录下,可以 cd $M2_HOME/conf 进入。

在pluginGroups中增加一个com.spotify

  <pluginGroups>
    <pluginGroup>com.spotify</pluginGroup>
  </pluginGroups>

登录情况

需要登录

关于如何验证登录,坑比较多。如果你在habor设置你的仓库为私有,那必须要登录,按照官方配置就可以,如下。

 <plugin>
    <groupId>com.spotify</groupId>
    <artifactId>dockerfile-maven-plugin</artifactId>
    <version>${version}</version>
    <configuration>
        <username>repoUserName</username>
        <password>repoPassword</password>
        <repository>${docker.image.prefix}/${project.artifactId}</repository>
        <buildArgs>
            <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
        </buildArgs>
    </configuration>
</plugin>

无需登录

但因为我配置了在k8s自动从habor获取镜像,所以设置了公开,这种情况下无需登录,但有时也会执行失败,此时你需要删掉~/.docker/config.json中的这个网站的配置。

cat ~/.docker/config.json

{
    "auths": {
        "192.168.87.110:5000": {
            "auth": "YWRtaW46JKDtaW4xMjM="
        }(删掉此处)
    },
    "HttpHeaders": {
        "User-Agent": "Docker-Client/18.09.0 (linux)"
    }
}

确认这里为空后,如果还报错,可以再执行一次docker login … ,这样就成功了

maven多模块情况配置

在多模块的情况下,打包插件一定要放置在Application子模块中,如果放在root pom中会导致打包不成功。

如下情况:

  • -app
  • ​ -common
  • ​ -file
  • ​ -mail
  • ​ -application
  • ​ -pom.xml

这种情况,我们可以分两个步骤

第一步先打包全部模块,在根目录下

mvn clean package -P test

第二步在要打包镜像的子模块中执行deploy命令

mvn dockerfile:build dockerfile:push

这样,就能成功将子模块打包为镜像并push。

jenkins

在本地测试完之后,要将这个流程弄到jenkins,做一些配置。

jenkins服务器安装docker

此处不再赘述,maven的setting.xml等配置和本地一样。

修改jenkins项目配置

此时,由于项目需要打包两次(一次在根目录打包,第二次在子目录打包为镜像),所以需要执行两次mvn命令,和之前不一样,所以将第一次的执行还是使用jenkins的Build模块。

第二次的执行放置在post steps中通过命令在执行

cd 子模块目录
mvn clean package -P $env dockerfile:build dockerfile:push

这样,就可以完成打包并制作镜像的步骤了

到此这篇关于dockerfile-maven-plugin使用指南小结的文章就介绍到这了,更多相关dockerfile-maven-plugin使用 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • docker-maven-plugin 插件无法拉取对应jar包问题

    使用 docker-maven-plugin 插件时,maven无法拉取对应 jar 包.出现下面问题: maven 版本: 镜像仓库配置: <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central&l

  • 详细docker-maven-plugin使用方法

    目录 Docker-Maven-Plugin Maven插件自动部署步骤 1.修改宿主机的docker配置,开放2375端口,让其可以远程访问 2.刷新配置,重启服务 3.配置容器防火墙 4.在pom.xml 添加配置 Docker-Maven-Plugin 微服务部署有两种方法: 手动部署:首先基于源码打包生成jar包(或war包),写个Dockerfile文件,基于基础镜像搞个新镜像,将jar包(或war包)上传至虚拟机并拷贝至JDK容器.(太麻烦了) 通过Maven插件自动部署. 这也是企

  • 教你如何利用docker-maven-plugin自动化部署

    1.docker-maven-plugin 介绍 在我们持续集成过程中,项目工程一般使用 Maven 编译打包,然后生成镜像,通过镜像上线,能够大大提供上线效率,同时能够快速动态扩容,快速回滚,着实很方便.docker-maven-plugin 插件就是为了帮助我们在Maven工程中,通过简单的配置,自动生成镜像并推送到仓库中. **作用: 在编译工程时,能自动生成docker image,还可以远程推送至仓库,只需要在maven的配置文件pom.xml中合理的配置** 例子一(编译时自动生成d

  • dockerfile-maven-plugin极简教程(推荐)

    一.简介 maven是一个项目依赖管理和构建的工具,dockerfile-maven-plugin是一个maven的插件,主要作用是在项目构建的时候生成基于项目的docker镜像文件. 简而言之,此插件将maven和docker进行集成. 正常情况下,我们在开发了一个应用程序后,会使用maven进行打包,生成对应的jar文件.而后,会使用docker将jar文件build成一个镜像(docker image).之后,就可以在docker daemon中创建基于镜像的容器,并可提供服务了. doc

  • Maven插件docker-maven-plugin的使用

    目录 1.docker-maven-plugin 介绍 2.环境.软件准备 3.Demo 示例 3.1 配置 DOCKER_HOST 3.2 示例构建镜像 3.3 执行命令 3.4 绑定Docker 命令到 Maven 各个阶段 3.5 使用私有 Docker 仓库地址 3.6 安全认证配置 3.7 其他参数 4.FAQ 参考资料 1.docker-maven-plugin 介绍 在我们持续集成过程中,项目工程一般使用 Maven 编译打包,然后生成镜像,通过镜像上线,能够大大提供上线效率,同时

  • dockerfile-maven-plugin使用指南小结

    目录 pom配置 setting.xml配置 登录情况 需要登录 无需登录 maven多模块情况配置 jenkins jenkins服务器安装docker 修改jenkins项目配置 最近在将应用部署到容器平台,需要在打包时生成docker镜像,在网上首先搜到了docker-maven-plugin这个插件,但使用起来很麻烦,在maven和dockfile都要做很多额外的配置.后来在官方Github看到作者推荐使用dockerfile-maven-plugin这个新的插件,于是替换成这个,但这个

  • Docker部署项目完全使用指南(小结)

    目录 环境准备 Docker安装启动 Java环境安装 Docker远程访问配置 Docker重启 IDEA配置Docker 项目配置 配置Dockerfile文件 Docker配置 Maven打包生成Docker镜像 总结 Linux操作命令 Docker操作命令 环境准备 Docker安装启动 检查系统内核是否满足3.10及以上版本: uname -r 升级内核软件包: yum update 使用yum安装Docker: yum install docker 启动Docker: system

  • docker maven plugin快速部署微服务的详细流程

    目录 一.前置条件 二.部署方法 1.开放远程部署端口 3.修改application文件 4.打包上传并创建镜像 5.启动容器 三.总结 一.前置条件 linux下装好docker并启动 1.使用国内 daocloud 一键安装命令 curl -sSL https://get.daocloud.io/docker | sh 2.启动docker systemctl start docker.service 二.部署方法 1.开放远程部署端口 <1>修改 docker 的配置文件 /lib/s

  • jQuery plugin animsition使用小结

    用法整理 下载地址:https://github.com/blivesta/animsition 文档地址:http://git.blivesta.com/animsition/ 实现的效果是,各种不同效果的转场效果 <div class="animsition"> <div class="item bg-indigo"> <h1>Animsition: Sandbox</h1> </div> <h2

  • .Net Core 2.2升级3.1的避坑指南(小结)

    写在前面 微软在更新.Net Core版本的时候,动作往往很大,使得每次更新版本的时候都得小心翼翼,坑实在是太多.往往是悄咪咪的移除了某项功能或者组件,或者不在支持XX方法,这就很花时间去找回需要的东西了,下面是个人在迁移.Net Core WebApi项目过程中遇到的问题汇总: 开始迁移 1. 修改*.csproj项目文件 <TargetFramework>netcoreapp2.2</TargetFramework> 修改为 <TargetFramework>net

  • 几个好用Maven镜像仓库地址(小结)

    1.如何修改镜像地址 找到Maven 安装目录,找到settings.xml,修改 Mirros <mirror> <id>nexus-aliyun</id> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> &l

  • 解决IDEA中下载free maven plugin插件无效的问题

    在IDEA中导入插件时成功 但是在实体类的方法接口中没有绿色的箭头(我现在是有的) 解决方案一:鼠标右键,选择最后一个Configure Gutter Lcons 查看里面的东西是否已经勾选上,如果已经勾选上还是没有效果请看方案二 解决方案二:请不要心慈手软彻底的删除idea,在安装idea软件,在进行下载free MyBatis plugin插件,应该八九不离十应该有效果了 总结 到此这篇关于解决IDEA中下载free maven plugin插件无效的问题的文章就介绍到这了,更多相关IDEA

  • Spring Boot Maven Plugin打包异常解决方案

    [背景]spring-boot项目,打包成可执行jar,项目内有两个带有main方法的类并且都使用了@SpringBootApplication注解(或者另一种情形:你有两个main方法并且所在类都没有使用@SpringBootApplication注解),pom.xml如下 <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin<

  • Maven Plugin的@Mojo和@Execute的具体使用

    本文以spring-boot-maven-plugin 2.5.4为例 @Mojo defaultPhase 以spring-boot-maven-plugin:start为例, 他的@Mojo defaultPhase是PRE_INTEGRATION_TEST,该目标默认绑定到此阶段. @Mojo(name = "start", requiresProject = true, defaultPhase = LifecyclePhase.PRE_INTEGRATION_TEST, re

  • java日期格式化YYYY-MM-dd遇坑指南小结

    前几天写日期格式化工具类,自己做测试的时候,无意中发现一个问题,如果把format参数设置成YYYY-MM-DD,输出的结果很奇怪. Date result1 = string2Date("2016-12-15", "yyyy-MM-dd"); System.out.println(result1); Date result2 = string2Date("2016-12-15", "YYYY-MM-DD"); System.

随机推荐