溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用dockerfile-maven-plugin

發布時間:2021-09-28 13:39:51 來源:億速云 閱讀:208 作者:iii 欄目:開發技術

本篇內容主要講解“如何使用dockerfile-maven-plugin”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何使用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模塊。

    如何使用dockerfile-maven-plugin

    第二次的執行放置在post steps中通過命令在執行

    如何使用dockerfile-maven-plugin

    cd 子模塊目錄
    mvn clean package -P $env dockerfile:build dockerfile:push

    這樣,就可以完成打包并制作鏡像的步驟了

    到此,相信大家對“如何使用dockerfile-maven-plugin”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女