您好,登錄后才能下訂單哦!
這篇文章主要介紹了怎么使用Maven打包構(gòu)建Docker鏡像并推送到倉庫的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇怎么使用Maven打包構(gòu)建Docker鏡像并推送到倉庫文章都會有所收獲,下面我們一起來看看吧。
修改daemon.json文件,開放端口2375
"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]
我的文件如下所示:
{ "insecure-registries":["10.xx.xx.xx:5000"], "hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"] } { "graph":"/Data/docker" }
在項目的pom文件引入docker-maven-plugin插件
<plugin> <!-- https://mvnrepository.com/artifact/com.spotify/docker-maven-plugin --> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.2.2</version> <executions> <!-- 當(dāng)mvn執(zhí)行install操作的時候,執(zhí)行docker的build和push --> <execution> <id>build</id> <phase>install</phase> <goals> <goal>build</goal> <!-- <goal>push</goal>--> </goals> </execution> </executions> <configuration> <!-- 連接到 帶docker環(huán)境的linux服務(wù)器 編譯image --> <dockerHost>http://10.xx.xx.xx:2375</dockerHost> <!--格式:私有倉庫/鏡像名稱:版本號, 如果要執(zhí)行push操作, 那么鏡像名稱必須為私有倉庫為前綴,不然無效。--> <imageName>10.xx.xx.xx:5000/${project.artifactId}:${docker.tag}</imageName> <!--指定dockerfile文件路徑--> <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory> <!-- 指定jar包路徑,這里對應(yīng)Dockerfile中復(fù)制 jar 包到 docker 容器指定目錄配置,也可以寫到 Docokerfile 中 --> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> <!--跳過測試--> <!-- push到 docker hub 開始 --> <!-- serverId 這個是配置在maven的setting.xml中私服的登錄賬戶信息--> <!-- <serverId>docker-hub</serverId>--> <retryPushCount>3</retryPushCount> <retryPushTimeout>2000</retryPushTimeout> <registryUrl>10.xx.xx.xx:5000</registryUrl> <!-- 是否自動推送到Registry Server, 建議手動推送 --> <pushImage>${docker.push}</pushImage> <!-- push到 docker hub 結(jié)束 --> </configuration> </plugin>
重要配置解釋:
dockerHost
:docker所在服務(wù)器的ip和開放的端口
imageName
:最終構(gòu)建的鏡像名稱
dockerDirectory
:本地dockerfile文件存放路徑
targetPath
:本地jar包生成位置
registryUrl
:服務(wù)器docker的倉庫地址
pushImage
:是否在構(gòu)建鏡像后同時推送到Docker倉庫
在本地項目的src/main下創(chuàng)建docker目錄,在docker目錄下創(chuàng)建dockerfile文件
FROM 10.xx.xx.xx:5000/java VOLUME /tmp ENV LANG C.UTF-8 COPY *.jar app.jar RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime RUN echo "Asia/Shanghai" > /etc/timezone ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom", "-Djava.util.Arrays.useLegacyMergeSort=true", "-jar","app.jar"]
此時,對該項目進行mvn install時,相當(dāng)于會同時進行docker:build的動作,將本地項目jar包構(gòu)建成鏡像到服務(wù)器中
如果每個服務(wù)的鏡像構(gòu)建沒有差異,可以將dockerfile從子項目中抽出來,就不需要在每一個項目模塊中都創(chuàng)建相同的文件,直接放在項目根路徑下就可以進行通用,同時修改pom配置
<!--指定dockerfile文件路徑--> <dockerDirectory>${project.parent.basedir}/docker</dockerDirectory>
此時的dockerfile存儲位置為項目父級目錄的docker文件夾下。
關(guān)于“怎么使用Maven打包構(gòu)建Docker鏡像并推送到倉庫”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“怎么使用Maven打包構(gòu)建Docker鏡像并推送到倉庫”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(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)容。