通過 Maven 的 Docker 插件可以構(gòu)建 Docker 鏡像
創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括大祥網(wǎng)站建設(shè)、大祥網(wǎng)站制作、大祥網(wǎng)頁制作以及大祥網(wǎng)絡(luò)營(yíng)銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,大祥網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到大祥省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
快速入門
在 pom.xml 中添加 Docker 插件
com.spotify docker-maven-plugin 0.4.13 linyuantongxue/docker-demo:0.0.1 // 指定鏡像名稱,linyuantongxue 是倉庫名稱(對(duì)應(yīng) DockerHub 用戶名),docker-demo 是鏡像名稱(對(duì)應(yīng) DockerHub 倉庫名),0.0.1 是標(biāo)簽名稱(相當(dāng)于版本號(hào))java // 指定基礎(chǔ)鏡像,等同 FROM 指令 ["java","-jar","app.jar"] // 等同于 ENTRYPOINT 指令/ ${project.build.directory} // 指定要復(fù)制的根目錄,${project.build.directory} 表示 target 目錄${project.build.finalName}.jar // 指定要復(fù)制的文件,${project.build.finalName}.jar 指打包后的 jar 文件
執(zhí)行以下命令構(gòu)建 Docker 鏡像
mvn clean package docker:build
執(zhí)行 docker images 查看剛才構(gòu)建的鏡像
讀取 Dockerfile 文件
讀取 Dockerfile 文件就不必指定 baseImage 和 entrypoint
com.spotify docker-maven-plugin 0.4.13 ${project.basedir}/src/main/docker // 指定要讀取的 Dockerfile 文件linyuantongxue/docker-demo:0.0.1 // 指定鏡像名稱,linyuantongxue 是倉庫名稱(對(duì)應(yīng) DockerHub 用戶名),docker-demo 是鏡像名稱(對(duì)應(yīng) DockerHub 倉庫名),0.0.1 是標(biāo)簽名稱(相當(dāng)于版本號(hào))/ ${project.build.directory} // 指定要復(fù)制的根目錄,${project.build.directory} 表示 target 目錄${project.build.finalName}.jar // 指定要復(fù)制的文件,${project.build.finalName}.jar 指打包后的 jar 文件
將插件綁定在某個(gè) phase 執(zhí)行
很多場(chǎng)景下有這樣的需求,比如執(zhí)行 mvn clean package 時(shí)插件就自動(dòng)構(gòu)建 Docker 鏡像,要實(shí)現(xiàn)這點(diǎn)只需要將插件的 goal 綁定在某個(gè) phase 即可
maven 命令格式是:mvn phase:goal,phase 綁定了目標(biāo)的構(gòu)建生命周期階段,goal 配置的執(zhí)行目標(biāo)
只需添加如下配置:
com.spotify docker-maven-plugin 0.4.13 // 在 maven 生命周期 package 中執(zhí)行 build 構(gòu)建目標(biāo)// $$$$$$$$$$$$$$$$華麗的分割線$$$$$$$$$$$$$$$$ build-image package build linyuantongxue/docker-demo:0.0.1 java ["java","-jar","app.jar"] / ${project.build.directory} ${project.build.finalName}.jar
推送鏡像
使用 Maven 插件也可以推送鏡像到 Docker Hub
修改 Maven 全局配置信息文件 settings.xml,配置 Docker Hub 用戶信息
docker-hub # DockerHub 該網(wǎng)站的用戶名必須全部為小寫才正確linyuantongxue 765371578Ly 765371578@qq.com
修改 pom 文件
com.spotify docker-maven-plugin 0.4.13 linyuantongxue/docker-demo:0.0.1 java ["java","-jar","app.jar"] / ${project.build.directory} ${project.build.finalName}.jar docker-hub
執(zhí)行以下命令,添加 pushImage 標(biāo)識(shí),表示推送鏡像
mvn clean package docker:build -DpushImage
上面例子中通過 imageName 指定鏡像名稱和標(biāo)簽,也可以借助 imageTags 元素更為靈活的指定鏡像名稱和標(biāo)簽,這樣就可以為同一個(gè)鏡像指定兩個(gè)標(biāo)簽
linyuantongxue/docker-demo 0.0.1 latest
也可在構(gòu)建命令時(shí)使用 dockerImageTags 參數(shù)指定標(biāo)簽名稱
若需要重復(fù)構(gòu)建相同標(biāo)簽名稱的鏡像,可將 forceTags 設(shè)置為 true
// ....... true
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。