dockerfile-maven-plugin使用指南小結(jié)
最近在將應(yīng)用部署到容器平臺,需要在打包時生成docker鏡像,在網(wǎng)上首先搜到了docker-maven-plugin這個插件,但使用起來很麻煩,在maven和dockfile都要做很多額外的配置。后來在官方Github看到作者推薦使用dockerfile-maven-plugin這個新的插件,于是替換成這個,但這個插件在網(wǎng)上的相關(guān)資料較少。在此記錄一哈
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>-->
<!--<!–如果package時不想用docker打包,就注釋掉這個goal–>-->
<!--<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 進(jìn)入。
在pluginGroups中增加一個com.spotify
<pluginGroups>
<pluginGroup>com.spotify</pluginGroup>
</pluginGroups>
登錄情況
需要登錄
關(guān)于如何驗(yàn)證登錄,坑比較多。如果你在habor設(shè)置你的倉庫為私有,那必須要登錄,按照官方配置就可以,如下。
<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>
無需登錄
但因?yàn)槲遗渲昧嗽趉8s自動從habor獲取鏡像,所以設(shè)置了公開,這種情況下無需登錄,但有時也會執(zhí)行失敗,此時你需要刪掉~/.docker/config.json中的這個網(wǎng)站的配置。
cat ~/.docker/config.json
{
"auths": {
"192.168.87.110:5000": {
"auth": "YWRtaW46JKDtaW4xMjM="
}(刪掉此處)
},
"HttpHeaders": {
"User-Agent": "Docker-Client/18.09.0 (linux)"
}
}
確認(rèn)這里為空后,如果還報錯,可以再執(zhí)行一次docker login … ,這樣就成功了
maven多模塊情況配置
在多模塊的情況下,打包插件一定要放置在Application子模塊中,如果放在root pom中會導(dǎo)致打包不成功。
如下情況:
- -app
- -common
- -file
- -application
- -pom.xml
這種情況,我們可以分兩個步驟
第一步先打包全部模塊,在根目錄下
mvn clean package -P test
第二步在要打包鏡像的子模塊中執(zhí)行deploy命令
mvn dockerfile:build dockerfile:push
這樣,就能成功將子模塊打包為鏡像并push。
jenkins
在本地測試完之后,要將這個流程弄到j(luò)enkins,做一些配置。
jenkins服務(wù)器安裝docker
此處不再贅述,maven的setting.xml等配置和本地一樣。
修改jenkins項(xiàng)目配置
此時,由于項(xiàng)目需要打包兩次(一次在根目錄打包,第二次在子目錄打包為鏡像),所以需要執(zhí)行兩次mvn命令,和之前不一樣,所以將第一次的執(zhí)行還是使用jenkins的Build模塊。

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

cd 子模塊目錄 mvn clean package -P $env dockerfile:build dockerfile:push
這樣,就可以完成打包并制作鏡像的步驟了
到此這篇關(guān)于dockerfile-maven-plugin使用指南小結(jié)的文章就介紹到這了,更多相關(guān)dockerfile-maven-plugin使用 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何解決啟動docker desktop報The network name ca
在使用Docker Desktop時,可能遇到"The network name cannot be found"的錯誤,解決這個問題的方法是打開管理員權(quán)限的終端,執(zhí)行重啟Docker Desktop的相關(guān)命令,如果遇到虛擬化未開啟的提示,需要執(zhí)行“bcdedit /set hypervisorlaunchtype auto”2024-10-10
docke-cli的調(diào)試環(huán)境搭建過程
在搭建docker-cli的調(diào)試環(huán)境時,遇到很多坑,通過本文講解下搭建docke-cli的調(diào)試環(huán)境的詳細(xì)方法,需要的朋友可以參考下2022-11-11
記 -bash: docker-compose: command not&nbs
這篇文章主要介紹了記 -bash: docker-compose: command not found 的問題解決方法,本文給大家介紹的非常詳細(xì)對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2024-01-01
Docker 數(shù)據(jù)管理Named volume詳解
這篇文章主要介紹了Docker 數(shù)據(jù)管理Named volume詳解的相關(guān)資料,需要的朋友可以參考下2017-03-03
Docker不能綁定靜態(tài)的外網(wǎng)固定ip的問題及解決辦法
這篇文章主要介紹了Docker不能綁定靜態(tài)的外網(wǎng)固定ip的問題及解決辦法,需要的朋友可以參考下2017-01-01
解決docker安裝完成報:bridge-nf-call-iptables is disabled問題
這篇文章主要介紹了解決docker安裝完成報:bridge-nf-call-iptables is disabled問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11

