溫馨提示×

溫馨提示×

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

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

Maven插件中怎么構(gòu)建Docker鏡像

發(fā)布時間:2021-08-07 14:25:02 來源:億速云 閱讀:184 作者:Leah 欄目:編程語言

Maven插件中怎么構(gòu)建Docker鏡像,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

pom 配置

pom文件中需要引入相應(yīng)的插件。docker-maven-plugin有三款:spotify、fabric8io和bibryam。其中第一款最為流行,資料也多,所以毫不猶豫選擇第一款。

插件有兩種使用方式,一種是在直接在pom配置中指定baseImage和entryPoint。另一種適合于復(fù)雜的構(gòu)建,使用dockerfile,只需要在配置中指定dockerfile的位置。前一種比較簡單,此處略過,主要講下第二種的配置

<plugin>       <groupId>com.spotify</groupId>       <artifactId>docker-maven-plugin</artifactId>       <version>${maven.docker.version}</version>       <!--插件綁定到phase-->       <executions>         <execution>           <phase>install</phase>           <goals>             <goal>build</goal>           </goals>         </execution>       </executions>       <configuration>       <!--配置變量,包括是否build、imageName、imageTag,非常靈活-->         <skipDocker>${docker.skip.build}</skipDocker>         <imageName>${docker.image.prefix}/${project.artifactId}</imageName>         <!--最后鏡像產(chǎn)生了兩個tag,版本和和最新的-->         <imageTags>           <imageTag>${project.version}</imageTag>           <imageTag>latest</imageTag>         </imageTags>         <forceTags>true</forceTags>                  <env>           <TZ>Asia/Shanghai</TZ>         </env>         <!--時區(qū)配置-->         <runs>           <run>ln -snf /usr/share/zoneinfo/$TZ /etc/localtime</run>           <run>echo $TZ > /etc/timezone</run>                    </runs>         <dockerDirectory>${project.basedir}</dockerDirectory>         <resources>           <resource>             <targetPath>/</targetPath>             <directory>${project.build.directory}</directory>             <include>${project.build.finalName}.jar</include>           </resource>         </resources>         <!--push到私有的hub-->         <serverId>docker-registry</serverId>       </configuration></plugin>

${maven.docker.version}${docker.skip.build}、${docker.image.prefix}都是可配置的變量。${project.basedir}${project.build.directory}、${project.build.finalName}${project.version}分別對應(yīng)項目根目錄、構(gòu)建目錄、打包后生成的結(jié)果名稱、項目版本號。

上面的pom插件配置,指定了dockerfile的位置和鏡像的命名規(guī)則。并將docker的build目標,綁定在install這個phase上。

dockerfile

FROM java:8COPY target/maven-docker-image-0.0.1-SNAPSHOT.jar /app.jarEXPOSE 8080ENTRYPOINT ["java","-jar" ,"/app.jar"]

setting.xml

在pom插件中,還有一個serverId的配置。這個配置是必要的,對于需要將image上傳到私有hub上,在如上配置之后,只需要加上-DpushImage即可實現(xiàn)。serverId是與maven的配置文件setting.xml相對應(yīng),setting.xml中增加的配置:

<server> <id>docker-registry</id> <username>用戶名</username> <password>密碼</password> <configuration>  <email>郵箱</email> </configuration></server>

看完上述內(nèi)容,你們掌握Maven插件中怎么構(gòu)建Docker鏡像的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

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

AI