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

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

熱門標(biāo)簽:智能手機(jī) 阿里云 使用U盤裝系統(tǒng) 網(wǎng)站建設(shè) 美圖手機(jī) 檢查注冊(cè)表項(xiàng) 硅谷的囚徒呼叫中心 百度競(jìng)價(jià)點(diǎn)擊價(jià)格的計(jì)算公式

背景

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

spotify 、fabric8

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

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

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

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

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

jib

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

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

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

mvn jib:dockerBuild

以上三種方案的問題

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

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

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

解決方案

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

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

 <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 自動(dòng)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)建和自動(dòng)發(fā)布

mvn spring-boot:build-image

其他說(shuō)明

docker host 配置不生效

如下圖 ① 處配置 節(jié)點(diǎn),但是 ② 報(bào)錯(cuò)提示 host 不一致

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

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

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

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

 :: 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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

標(biāo)簽:黃山 賀州 湘潭 山南 煙臺(tái) 懷化 通遼 湖北

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Spring Boot 2.4 新特性之一鍵構(gòu)建Docker鏡像的過(guò)程詳解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266