濮阳杆衣贸易有限公司

主頁 > 知識庫 > Spring Boot 2.4 新特性之一鍵構(gòu)建Docker鏡像的過程詳解

Spring Boot 2.4 新特性之一鍵構(gòu)建Docker鏡像的過程詳解

熱門標(biāo)簽:地圖標(biāo)注小程序 宿州外呼系統(tǒng)公司 信陽電銷外呼系統(tǒng)怎么樣 株洲電銷 南昌外呼系統(tǒng)定制 南充電銷外呼系統(tǒng) 陜西辦理400電話 海外工廠地圖標(biāo)注 貴陽網(wǎng)絡(luò)外呼系統(tǒng)軟件

背景

在我們開發(fā)過程中為了支持 Docker 容器化,一般使用 Maven 編譯打包然后生成鏡像,能夠大大提供上線效率,同時能夠快速動態(tài)擴(kuò)容,快速回滾,著實很方便。docker-maven-plugin 插件就是為了幫助我們在 Maven 工程中,通過簡單的配置,自動生成鏡像并推送到倉庫中。

spotify 、fabric8

這里主要使用的主要是如下兩種插件 spotify 、fabric8 , … -配置通過 xml 定義出 Dockerfile 或者掛載外部 Dockerfile 通過調(diào)用 Docker remote api 構(gòu)建出鏡像

pig 微服務(wù)平臺所有的容器化都是基于此構(gòu)建

<plugin>
 <groupId>com.spotify</groupId>
 <artifactId>docker-maven-plugin</artifactId>
 ... -配置通過 xml 定義出 Dockerfile 或者掛載外部 Dockerfile
</plugin>

<plugin>
 <groupId>io.fabric8</groupId>
 <artifactId>docker-maven-plugin</artifactId>
  ... -配置通過 xml 定義出 Dockerfile 或者掛載外部 Dockerfile
</plugin>

執(zhí)行相應(yīng)的插件周期即可 mvn docker:build && mvn docker:push

jib

項目每次發(fā)布實際上變更的代碼量不大,尤其依賴的 jar 變動的可能性較小,如果使用前兩種插件構(gòu)建鏡像,會導(dǎo)致每次都全量構(gòu)建,會導(dǎo)致存儲和帶寬資源浪費。

jib 是 Google 于 18 年 7 月發(fā)布的一個針對 Java 應(yīng)用的構(gòu)建鏡像的工具(支持 Maven 和 Gradle) ,好處是能夠復(fù)用構(gòu)建緩存,能夠加快構(gòu)建,減小傳輸體積

<!--配置通過 xml 定義出 Dockerfile ,本質(zhì)上和外掛 Dockerfile 并無區(qū)別-->
<plugin>
  <groupId>com.google.cloud.tools</groupId>
  <artifactId>jib-maven-plugin</artifactId>
</plugin>

mvn jib:dockerBuild

以上三種方案的問題

在實際開發(fā)過程中,大部分的 spring boot 項目構(gòu)建 Dockerfile 都是相同,不需要通過的 XML 或者通過外掛 Dockerfile 來重新定義

以上插件需要對 Dockerfile 的定義知識有相對的了 對開發(fā)并不友好

沒充分理由 Spring Boot 2.3 以后的 Jar 分層技術(shù)。

解決方案

Spring Boot 2.4 推出了自己的 docker 構(gòu)建工具 整合在原有的 spring-boot-maven-plugin 中,只需要配置對應(yīng)目標(biāo)倉庫和主機(jī)信息即可完成鏡像構(gòu)建。

如下配置即可完成上圖中 通過開發(fā)機(jī)器在不安裝 Docker 的同時,通過 192.168.0.10 的 Docker Remote API 完成鏡像構(gòu)建并發(fā)布到 192.168.0.20 的鏡像倉庫

 <plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <configuration>
    <image>
      <name>192.168.0.20/pig4cloud/${project.artifactId}</name>
      <!-- 執(zhí)行完build 自動push -->
      <publish>true</publish>
    </image>
    <!--配置構(gòu)建宿主機(jī)信息,本機(jī)不用配置-->
    <docker>
			<host>http://192.168.0.10:2375</host>
      <tlsVerify>false</tlsVerify>
      <publishRegistry>
        <username>username</username>
        <password>password</password>
        <url>192.168.0.20</url>
      </publishRegistry>
    </docker>
  </configuration>
</plugin>

執(zhí)行以下命令即可完成 鏡像的構(gòu)建和自動發(fā)布

mvn spring-boot:build-image

其他說明

docker host 配置不生效

如下圖 ① 處配置 節(jié)點,但是 ② 報錯提示 host 不一致

檢查本地是否配置 $DOCKER_HOST 環(huán)境變量,經(jīng)過閱讀源碼后發(fā)現(xiàn)優(yōu)先讀取此變量。

⋊> ~ echo $DOCKER_HOST                         11:07:51
tcp://172.17.0.111:2375

網(wǎng)絡(luò)支持

截取部分構(gòu)建過程中的日志,如下需要從 github 下載相關(guān)的依賴 約 100M ,這個過程大概率會失敗。建議通過配置代理或者使用國外 ECS 來解決。

 :: Spring Boot ::        (v2.4.0)
[INFO] > Running creator
[INFO]   [creator]     Downloading from https://github.com/bell-sw/Liberica/releases/download/8u275+1/bellsoft-jre8u275+1-linux-amd64.tar.gz
[INFO]   [creator]    JVMKill Agent 1.16.0: Contributing to layer
[INFO]   [creator]     Downloading from https://github.com/cloudfoundry/jvmkill/releases/download/v1.16.0.RELEASE/jvmkill-1.16.0-RELEASE.so
[INFO]   [creator]     Downloading from https://repo.spring.io/release/org/springframework/cloud/spring-cloud-bindings/1.6.0/spring-cloud-bindings-1.6.0.jar
[INFO]   [creator]     Verifying checksum
[INFO]   [creator]      192.168.0.20/pig4cloud/demo:latest
[INFO]
[INFO] Successfully built image '192.168.0.20/pig4cloud/demo:latest'
[INFO] > Pushing image '192.168.0.20/pig4cloud/demo:latest' 100%
[INFO] > Pushed image '192.168.0.20/pig4cloud/demo:latest'
[INFO] BUILD SUCCESS

到此這篇關(guān)于Spring Boot 2.4 新特性之一鍵構(gòu)建Docker鏡像的文章就介紹到這了,更多相關(guān)Spring Boot 2.4 構(gòu)建Docker鏡像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

標(biāo)簽:鄭州 石嘴山 玉林 拉薩 汕頭 三明 開封 晉城

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Spring Boot 2.4 新特性之一鍵構(gòu)建Docker鏡像的過程詳解》,本文關(guān)鍵詞  Spring,Boot,2.4,新特性,新,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Spring Boot 2.4 新特性之一鍵構(gòu)建Docker鏡像的過程詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于Spring Boot 2.4 新特性之一鍵構(gòu)建Docker鏡像的過程詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    怀化市| 抚远县| 当雄县| 于都县| 庆阳市| 叙永县| 布尔津县| 化德县| 类乌齐县| 鄂托克旗| 西和县| 桃源县| 罗田县| 莱芜市| 潜江市| 香港 | 饶平县| 定陶县| 杭锦后旗| 博爱县| 安庆市| 台中市| 海宁市| 乌苏市| 成都市| 恩施市| 鄂尔多斯市| 武城县| 东丽区| 大名县| 沁水县| 怀集县| 宜君县| 左云县| 宁乡县| 宁津县| 绵竹市| 嘉祥县| 玉门市| 古丈县| 辛集市|