成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 前端
引入了容器的概念后,開發者在面對這個問題時有了更好的解決方案。容器將整個軟件堆棧打包成一個獨立的實體,并可以方便地進行部署,不再受限于"在我的機器上可以運行"的問題。

引言

隨著技術的發展,應用程序的部署方式也在不斷演變。傳統的部署方式需要為每個應用程序提供一臺獨立的機器,并確保機器的配置滿足應用程序的運行需求。

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

因此,今天我們介紹三種構建Spring Boot應用程序的Docker鏡像的機制:Spring Boot構建插件;Fabric8 Maven插件;JIB Maven插件。

創建應用程序

訪問https://start.spring.io,并創建一個僅包含spring-web依賴項的應用程序。

添加一個簡單的控制器來接受一些請求。

@RestController
@SpringBootApplication
public 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"。

接下來,使用Spring Boot構建插件構建我們的Docker鏡像。

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

Spring Boot的構建插件提供了一種使用BuildPacks概念創建Docker鏡像的方法。Build Packs提供了一種定義應用程序構建方式的方法。它會檢測應用程序的類型并進行構建,以便在特定平臺上或獨立于平臺運行。

現在,Spring Boot的構建插件使用BuildPack構建器鏡像,會自動檢測到它是一個Spring Boot應用程序,并構建相關的鏡像。

只需要使用Maven在Spring Boot應用程序上調用image-build目標即可。

mvn spring-boot:build-image

這將從BuildPacks中拉取基礎構建器鏡像,以檢測應用程序的類型并選擇適用于該應用程序的構建包。然后,它使用所選的構建包構建您的最終鏡像。

這里是一個顯示構建包所需的構建過程的日志。

===> 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'

可以使用參數指定最終鏡像的名稱,如下所示:

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

或者可以在配置中指定,如下所示:

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

現在,可以在這里進行一些級別的自定義。如果想真正自定義鏡像的構建過程,需要創建自己的構建器鏡像來定義構建過程。

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

Fabric8 Maven插件為構建和部署Java應用程序提供了一種簡化的方法,包括創建Docker鏡像。

首先,需要在pom.xml文件中添加Fabric8 Maven插件的依賴項。

<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>部分中的一些重要部分。

在<from>標簽中,指定了基礎鏡像,然后在<assembly>部分指定了鏡像的組裝方式。

在assembly部分,使用值為artifact的<descriptorRef>來指定我們只想復制構建的artifact,并使用<name>標簽指定它將被復制到目標鏡像中的位置。由于這里構建了一個單獨的fat jar,只需復制artifact。

最后,指定<cmd>來運行被復制的jar文件。

運行maven構建命令后,鏡像將被構建。

檢查鏡像的層,發現artifact被復制為最后一層,如下所示。

圖片圖片

可以創建分層的Docker鏡像,通過在assembly標簽中指定要創建的層以及需要在這些層中復制的內容。

現在,可以使用docker run -p 8080:8080 service-docker-image-build:0.0.1-SNAPSHOT簡單地運行docker文件。

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

讓我們來看看來自Google的JIB插件。它是由Google提供和維護的工具之一,提供了相當詳細的自定義級別。

<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>標簽中指定了最終鏡像的名稱。

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

來看看創建的鏡像的層次結構。

圖片圖片

圖像的層次結構如下所示:

  • 第 1 層:包含所有依賴項。
  • 第 2 層:包含應用程序資源。
  • 第 3 層:包含應用程序類。
  • 第 4 層:包含jib-classpath-file,其中包含類路徑信息,以及jib-main-class-file,其中包含要執行的完全限定的主類的名稱。
責任編輯:武曉燕 來源: Java學研大本營
相關推薦

2025-01-08 09:55:37

Spring接口數據庫

2012-07-17 09:16:16

SpringSSH

2020-03-19 10:44:19

DockerSpring Boo單層鏡像

2011-06-03 11:53:06

Spring接口

2009-07-20 15:08:41

Spring實例化Be

2022-08-19 11:19:49

單元測試Python

2011-07-25 12:41:38

接入方式布線

2020-10-18 08:51:18

Spring Boot

2020-11-20 10:50:01

Docker容器

2011-07-22 17:22:20

Spring

2020-11-12 07:51:05

DockerSpring Boot應用

2012-03-21 17:18:41

2012-03-18 21:10:07

2024-06-12 12:08:03

鏡像倉庫Cloudflare域名

2023-11-22 15:22:34

SpringBootTomcat

2020-11-01 17:10:46

異步事件開發前端

2021-11-05 21:33:28

Redis數據高并發

2019-11-20 18:52:24

物聯網智能照明智能恒溫器

2014-12-31 17:42:47

LBSAndroid地圖

2021-06-24 08:52:19

單點登錄代碼前端
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲va欧美va天堂v国产综合 | 99热这里只有精品8 激情毛片 | 亚洲国产一区二区视频 | 亚洲一区在线播放 | 国产精品美女久久久久久免费 | 亚洲一区二区三区四区五区午夜 | 真人女人一级毛片免费播放 | 黄色成人免费看 | 中文字幕国产一区 | 免费精品视频在线观看 | 国产欧美精品区一区二区三区 | 成人午夜精品 | wwwxx在线观看| 欧美在线观看黄色 | 国产韩国精品一区二区三区 | 国产免费一区二区 | 精品视频一区二区三区在线观看 | 国产一区二区精品在线 | 一级少妇女片 | 激情免费视频 | 精品一二区 | 91久久久精品国产一区二区蜜臀 | 日韩在线三级 | 久久精品久久久久久 | 日韩精品免费一区二区在线观看 | 欧美成人精品 | 在线91| 黄色电影在线免费观看 | 免费黄色大片 | 国产精品激情在线 | 国产亚洲精品久久久久动 | 国产aⅴ爽av久久久久久久 | 中文字幕蜜臀 | 国产一区二区欧美 | 91人人看| 免费黄色网址视频 | 亚洲免费在线观看 | 国产欧美日韩一区二区三区在线观看 | 欧美三级视频在线观看 | 亚洲精品色 | jdav视频在线观看免费 |