日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

無需Docker File,用三種方式創建Spring Boot應用的Docker鏡像

來源: 責編: 時間:2023-12-03 16:20:44 280觀看
導讀引言隨著技術的發展,應用程序的部署方式也在不斷演變。傳統的部署方式需要為每個應用程序提供一臺獨立的機器,并確保機器的配置滿足應用程序的運行需求。然而,引入了容器的概念后,開發者在面對這個問題時有了更好的解決方

引言

隨著技術的發展,應用程序的部署方式也在不斷演變。傳統的部署方式需要為每個應用程序提供一臺獨立的機器,并確保機器的配置滿足應用程序的運行需求。7QH28資訊網——每日最新資訊28at.com

然而,引入了容器的概念后,開發者在面對這個問題時有了更好的解決方案。容器將整個軟件堆棧打包成一個獨立的實體,并可以方便地進行部署,不再受限于"在我的機器上可以運行"的問題。7QH28資訊網——每日最新資訊28at.com

因此,今天我們介紹三種構建Spring Boot應用程序的Docker鏡像的機制:Spring Boot構建插件;Fabric8 Maven插件;JIB Maven插件。7QH28資訊網——每日最新資訊28at.com

創建應用程序

訪問https://start.spring.io,并創建一個僅包含spring-web依賴項的應用程序。7QH28資訊網——每日最新資訊28at.com

添加一個簡單的控制器來接受一些請求。7QH28資訊網——每日最新資訊28at.com

@RestController@SpringBootApplicationpublic class ServiceDockerImageBuildApplication {   public static void main(String[] args) {      SpringApplication.run(ServiceDockerImageBuildApplication.class, args);   }   @GetMapping("/")   public ResponseEntity get(){      return ResponseEntity.ok("All Ok");   }}

當運行這個應用程序并打開"http://localhost:8080"時,會得到一個響應"All Ok"。7QH28資訊網——每日最新資訊28at.com

接下來,使用Spring Boot構建插件構建我們的Docker鏡像。7QH28資訊網——每日最新資訊28at.com

1 使用Spring Boot構建插件構建Docker鏡像

Spring Boot的構建插件提供了一種使用BuildPacks概念創建Docker鏡像的方法。Build Packs提供了一種定義應用程序構建方式的方法。它會檢測應用程序的類型并進行構建,以便在特定平臺上或獨立于平臺運行。7QH28資訊網——每日最新資訊28at.com

現在,Spring Boot的構建插件使用BuildPack構建器鏡像,會自動檢測到它是一個Spring Boot應用程序,并構建相關的鏡像。7QH28資訊網——每日最新資訊28at.com

只需要使用Maven在Spring Boot應用程序上調用image-build目標即可。7QH28資訊網——每日最新資訊28at.com

mvn spring-boot:build-image

這將從BuildPacks中拉取基礎構建器鏡像,以檢測應用程序的類型并選擇適用于該應用程序的構建包。然后,它使用所選的構建包構建您的最終鏡像。7QH28資訊網——每日最新資訊28at.com

這里是一個顯示構建包所需的構建過程的日志。7QH28資訊網——每日最新資訊28at.com

===> DETECTING[INFO]     [creator]     6 of 24 buildpacks participating[INFO]     [creator]     paketo-buildpacks/ca-certificates   3.2.4[INFO]     [creator]     paketo-buildpacks/bellsoft-liberica 9.3.7[INFO]     [creator]     paketo-buildpacks/syft              1.12.0[INFO]     [creator]     paketo-buildpacks/executable-jar    6.2.4[INFO]     [creator]     paketo-buildpacks/dist-zip          5.2.4[INFO]     [creator]     paketo-buildpacks/spring-boot       5.12.0......[INFO] Successfully built image 'docker.io/library/service-docker-image-build:0.0.1-SNAPSHOT'

可以使用參數指定最終鏡像的名稱,如下所示:7QH28資訊網——每日最新資訊28at.com

mvn spring-boot:build-image /-Dspring-boot.build-image.imageName=my-spring-boot-image

或者可以在配置中指定,如下所示:7QH28資訊網——每日最新資訊28at.com

<plugin>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-maven-plugin</artifactId>   <configuration>      <imageName>my-spring-boot-image</imageName>   </configuration></plugin>

現在,可以在這里進行一些級別的自定義。如果想真正自定義鏡像的構建過程,需要創建自己的構建器鏡像來定義構建過程。7QH28資訊網——每日最新資訊28at.com

2 使用Fabric8 Maven插件構建Docker鏡像

Fabric8 Maven插件為構建和部署Java應用程序提供了一種簡化的方法,包括創建Docker鏡像。7QH28資訊網——每日最新資訊28at.com

首先,需要在pom.xml文件中添加Fabric8 Maven插件的依賴項。7QH28資訊網——每日最新資訊28at.com

<plugin>   <groupId>io.fabric8</groupId>   <artifactId>docker-maven-plugin</artifactId>   <version>0.37.0</version>   <executions>      <execution>         <id>docker-build</id>         <phase>package</phase>         <goals>            <goal>build</goal>         </goals>      </execution>   </executions>   <configuration>      <images>         <image>            <name>my-spring-boot-image</name>            <build>               <from>openjdk:11-jdk-slim</from>               <tags>                  <tag>latest</tag>               </tags>               <assembly>                  <descriptorRef>artifact</descriptorRef>               </assembly>            </build>         </image>      </images>   </configuration></plugin>

配置部分非常簡單。讓我們看一下<build>部分中的一些重要部分。7QH28資訊網——每日最新資訊28at.com

在<from>標簽中,指定了基礎鏡像,然后在<assembly>部分指定了鏡像的組裝方式。7QH28資訊網——每日最新資訊28at.com

在assembly部分,使用值為artifact的<descriptorRef>來指定我們只想復制構建的artifact,并使用<name>標簽指定它將被復制到目標鏡像中的位置。由于這里構建了一個單獨的fat jar,只需復制artifact。7QH28資訊網——每日最新資訊28at.com

最后,指定<cmd>來運行被復制的jar文件。7QH28資訊網——每日最新資訊28at.com

運行maven構建命令后,鏡像將被構建。7QH28資訊網——每日最新資訊28at.com

檢查鏡像的層,發現artifact被復制為最后一層,如下所示。7QH28資訊網——每日最新資訊28at.com

圖片圖片7QH28資訊網——每日最新資訊28at.com

可以創建分層的Docker鏡像,通過在assembly標簽中指定要創建的層以及需要在這些層中復制的內容。7QH28資訊網——每日最新資訊28at.com

現在,可以使用docker run -p 8080:8080 service-docker-image-build:0.0.1-SNAPSHOT簡單地運行docker文件。7QH28資訊網——每日最新資訊28at.com

3 使用Google的JIB插件構建Docker鏡像

讓我們來看看來自Google的JIB插件。它是由Google提供和維護的工具之一,提供了相當詳細的自定義級別。7QH28資訊網——每日最新資訊28at.com

<build>   <plugins>      <plugin>         <groupId>com.google.cloud.tools</groupId>         <artifactId>jib-maven-plugin</artifactId>         <version>3.2.1</version>         <configuration>            <from>               <image>openjdk:17</image>            </from>            <to>               <image>jib-build-${project.name}:${project.version}</image>            </to>         </configuration>         <executions>            <execution>               <phase>verify</phase>               <goals>                  <goal>dockerBuild</goal>               </goals>            </execution>         </executions>      </plugin>   </plugins></build>

這里,在<from>標簽中指定了所需的基礎鏡像,而在<to>標簽中指定了最終鏡像的名稱。7QH28資訊網——每日最新資訊28at.com

現在,在<execution>部分中使用了dockerBuild目標,這樣Docker鏡像將會構建到本地Docker守護程序中。如果使用build目標,JIB插件將會構建Docker鏡像并將其推送到相應的倉庫。它支持所有主要的倉庫,如docker.io、AWS ECR、Google GCR、Azure ACR等。為此,可以設置身份驗證機制以推送鏡像。7QH28資訊網——每日最新資訊28at.com

來看看創建的鏡像的層次結構。7QH28資訊網——每日最新資訊28at.com

圖片圖片7QH28資訊網——每日最新資訊28at.com

圖像的層次結構如下所示:7QH28資訊網——每日最新資訊28at.com

  • 第 1 層:包含所有依賴項。
  • 第 2 層:包含應用程序資源。
  • 第 3 層:包含應用程序類。
  • 第 4 層:包含jib-classpath-file,其中包含類路徑信息,以及jib-main-class-file,其中包含要執行的完全限定的主類的名稱。

本文鏈接:http://www.www897cc.com/showinfo-26-36472-0.html無需Docker File,用三種方式創建Spring Boot應用的Docker鏡像

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: realme 真我 GT5 Pro 手機全系內存標配 USB 3.2,提供 1TB 版本

下一篇: 中國助殘志愿者協會聯合無障礙智庫全程指導,騰訊前海總部攻堅無障礙環境認證最高等級

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 泊头市| 大丰市| 色达县| 伽师县| 鄂托克前旗| 沙湾县| 四平市| 苏尼特右旗| 呈贡县| 荔波县| 曲沃县| 左贡县| 松江区| 武城县| 安岳县| 靖江市| 无棣县| 兰州市| 南平市| 同仁县| 武邑县| 临城县| 阿拉善左旗| 延吉市| 苍山县| 中超| 桓仁| 东莞市| 莱州市| 长海县| 遵义县| 兴义市| 峡江县| 霍州市| 廉江市| 忻州市| 诸暨市| 陕西省| 淳安县| 翁源县| 龙井市|