您好,登錄后才能下訂單哦!
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è)資訊頻道,感謝各位的閱讀!
免責聲明:本站發(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)容。