您好,登錄后才能下訂單哦!
這篇文章主要介紹了怎么使用Maven打包構建Docker鏡像并推送到倉庫的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇怎么使用Maven打包構建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> <!-- 當mvn執行install操作的時候,執行docker的build和push --> <execution> <id>build</id> <phase>install</phase> <goals> <goal>build</goal> <!-- <goal>push</goal>--> </goals> </execution> </executions> <configuration> <!-- 連接到 帶docker環境的linux服務器 編譯image --> <dockerHost>http://10.xx.xx.xx:2375</dockerHost> <!--格式:私有倉庫/鏡像名稱:版本號, 如果要執行push操作, 那么鏡像名稱必須為私有倉庫為前綴,不然無效。--> <imageName>10.xx.xx.xx:5000/${project.artifactId}:${docker.tag}</imageName> <!--指定dockerfile文件路徑--> <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory> <!-- 指定jar包路徑,這里對應Dockerfile中復制 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 結束 --> </configuration> </plugin>
重要配置解釋:
dockerHost
:docker所在服務器的ip和開放的端口
imageName
:最終構建的鏡像名稱
dockerDirectory
:本地dockerfile文件存放路徑
targetPath
:本地jar包生成位置
registryUrl
:服務器docker的倉庫地址
pushImage
:是否在構建鏡像后同時推送到Docker倉庫
在本地項目的src/main下創建docker目錄,在docker目錄下創建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時,相當于會同時進行docker:build的動作,將本地項目jar包構建成鏡像到服務器中
如果每個服務的鏡像構建沒有差異,可以將dockerfile從子項目中抽出來,就不需要在每一個項目模塊中都創建相同的文件,直接放在項目根路徑下就可以進行通用,同時修改pom配置
<!--指定dockerfile文件路徑--> <dockerDirectory>${project.parent.basedir}/docker</dockerDirectory>
此時的dockerfile存儲位置為項目父級目錄的docker文件夾下。
關于“怎么使用Maven打包構建Docker鏡像并推送到倉庫”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“怎么使用Maven打包構建Docker鏡像并推送到倉庫”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。