溫馨提示×

溫馨提示×

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

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

Docker鏡像如何在Spring Boot 2.4中構建

發(fā)布時間:2020-12-03 14:36:48 來源:億速云 閱讀:134 作者:Leah 欄目:開發(fā)技術

這篇文章給大家介紹Docker鏡像如何在Spring Boot 2.4中構建,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

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

spotify 、fabric8

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

pig 微服務平臺所有的容器化都是基于此構建

<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í)行相應的插件周期即可 mvn docker:build && mvn docker:push

jib

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

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

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

mvn jib:dockerBuild

以上三種方案的問題

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

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

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

解決方案

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

Docker鏡像如何在Spring Boot 2.4中構建

如下配置即可完成上圖中 通過開發(fā)機器在不安裝 Docker 的同時,通過 192.168.0.10 的 Docker Remote API 完成鏡像構建并發(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>
    <!--配置構建宿主機信息,本機不用配置-->
    <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í)行以下命令即可完成 鏡像的構建和自動發(fā)布

mvn spring-boot:build-image

其他說明

docker host 配置不生效

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

Docker鏡像如何在Spring Boot 2.4中構建

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

&#8906;> ~ echo $DOCKER_HOST                         11:07:51
tcp://172.17.0.111:2375

網(wǎng)絡支持

截取部分構建過程中的日志,如下需要從 github 下載相關的依賴 約 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

關于Docker鏡像如何在Spring Boot 2.4中構建就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

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

AI