成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

詳解如何用SpringBoot 2.3.0.M1創(chuàng)建Docker映像

瀏覽:80日期:2023-05-17 09:32:15

1、發(fā)布

SpringBoot2.3.0.M1剛剛發(fā)布,它帶來了一些有趣的新特性,可以幫助您將SpringBoot應(yīng)用程序打包到Docker映像中。在這篇博客文章中,我們將查看創(chuàng)建Docker映像的典型方式,并展示如何通過使用這些新特性來改進(jìn)這些鏡像

2、說明

SpringBoot 2.3.0.M1 暫時(shí)不支持Windows, 很雞肋暫時(shí)在Mac 和Linux 上運(yùn)行良好

3、常見的Docker 運(yùn)行方式

一般情況下,通過docker 運(yùn)行springboot 是這樣的

FROM openjdk:8-jdk-alpineEXPOSE 8080ARG JAR_FILE=target/my-application.jarADD ${JAR_FILE} app.jarENTRYPOINT ['java','-jar','/app.jar']

4、常規(guī)方式通過docker 運(yùn)行springboot 存在的問題不是說常規(guī)方式不行,是他有一些可以改進(jìn)的地方

1、在運(yùn)行jar 的時(shí)候,沒把jar 給解壓縮,而是直接運(yùn)行了,這會(huì)導(dǎo)致一些額外的開銷,所以呢,最好能以沒壓縮的形式去運(yùn)行2、因?yàn)樾枰鲜歉拇a,然后重新運(yùn)行,上面那個(gè)代碼就不那么的好用。因?yàn)槟阋话悴粫?huì)去修改依賴或者進(jìn)行依賴升級(jí)這些操作,就是改改代碼,適應(yīng)業(yè)務(wù)變化,所以呢,最好能分個(gè)層,這樣構(gòu)建速度就快起來了

5、如何解決常規(guī)方式的不足呢

spring 提供了兩項(xiàng)技術(shù)

1、buildpack2、分層jar

如果您曾經(jīng)使用過像CloudFoundry或Heroku這樣的應(yīng)用程序平臺(tái),那么你可能使用了一個(gè)buildpack,可能甚至沒有意識(shí)到它是BuildPack平臺(tái)的一部分,它將應(yīng)用程序轉(zhuǎn)換為平臺(tái)實(shí)際可以運(yùn)行的東西。例如,CloudFoundry的Javabuildpack會(huì)注意到您正在搞一個(gè).jar文件并自動(dòng)添加相關(guān)的JRE

最近呢,spring 擺脫了云本地構(gòu)建包的一些束縛,讓不能獨(dú)立使用的這個(gè)東西呢,現(xiàn)在可以隨時(shí)隨地的構(gòu)建與docker 兼容的docker 鏡像了。

6、到底怎么構(gòu)建

Maven 方式

1、先下載一個(gè)包,然后解壓出來

$ curl https://start.spring.io/starter.zip -d bootVersion=2.3.0.M1 -d dependencies=web -o demo.zip$ unzip demo.zip

2、然后呢構(gòu)建鏡像就行,但是要確保本地已經(jīng)安裝了docker 才行

./mvnw spring-boot:build-image

3、你會(huì)看到這么一些日志

[INFO] Building image ’docker.io/library/demo:0.0.1-SNAPSHOT’[INFO][INFO] > Pulling builder image ’docker.io/cloudfoundry/cnb:0.0.43-bionic’ 100%[INFO] > Pulled builder image ’cloudfoundry/cnb@sha256:c983fb9602a7fb95b07d35ef432c04ad61ae8458263e7fb4ce62ca10de367c3b’[INFO] > Pulling run image ’docker.io/cloudfoundry/run:base-cnb’ 100%[INFO] > Pulled run image ’cloudfoundry/run@sha256:ba9998ae4bb32ab43a7966c537aa1be153092ab0c7536eeef63bcd6336cbd0db’[INFO] > Executing lifecycle version v0.5.0[INFO] > Using build cache volume ’pack-cache-5cbe5692dbc4.build’[INFO][INFO] > Running detector[INFO] [detector] 6 of 13 buildpacks participating...[INFO][INFO] > Running restorer[INFO] [restorer] Restoring cached layer ’org.cloudfoundry.openjdk:2f08c469c9a8adea1b6ee3444ba2a8242a7e99d87976a077faf037a9eb7f884b’...[INFO][INFO] > Running cacher[INFO] [cacher] Reusing layer ’org.cloudfoundry.openjdk:2f08c469c9a8adea1b6ee3444ba2a8242a7e99d87976a077faf037a9eb7f884b’[INFO] [cacher] Reusing layer ’org.cloudfoundry.jvmapplication:executable-jar’[INFO] [cacher] Caching layer ’org.cloudfoundry.springboot:spring-boot’[INFO] [cacher] Reusing layer ’org.cloudfoundry.springautoreconfiguration:46ab131165317d91fd4ad3186abf755222744e2d277dc413def06f3ad45ab150’[INFO][INFO] Successfully built image ’docker.io/library/demo:0.0.1-SNAPSHOT’

4、用docker 運(yùn)行這個(gè)鏡像

docker run -it -p8080:8080 demo:0.0.1-SNAPSHOT

7、分層

SpringBoot提供的內(nèi)置支持為開始使用內(nèi)置包提供了一種很好的方式。因?yàn)樗莃uildpack平臺(tái)規(guī)范的實(shí)現(xiàn),所以很容易遷移到更強(qiáng)大的buildpack工具

最基本的springboot 的jar 文件內(nèi)部格式

META-INF/ MANIFEST.MForg/ springframework/ boot/ loader/ ...BOOT-INF/ classes/ ... lib/ ...

分成了三層,一個(gè)是引導(dǎo)加載文件,一個(gè)是class 運(yùn)行文件,一個(gè)是依賴關(guān)系

但是分層結(jié)構(gòu)的jar 呢,會(huì)是這樣的結(jié)構(gòu)

META-INF/ MANIFEST.MForg/ springframework/ boot/ loader/ ...BOOT-INF/ layers/ <name>/ classes/ ... lib/ ... <name>/ classes/ ... lib/ ... layers.idx

他不再把lib 放到分開的獨(dú)立的層里面,而是放到一起去了,然后分了幾層。

并且多了一個(gè) idx 文件,這個(gè)文件里面是添加層的順序

最開始呢,分了這么些層,一共四個(gè)

1、dependencies(用于定期發(fā)布的依賴項(xiàng))

2、snapshot-dependencies(用于快照依賴項(xiàng))

3、resources(用于靜態(tài)資源)

4、application(適用于應(yīng)用程序類和資源)

這種分層是依據(jù)呢,是根據(jù)代碼可能的更改來分離代碼,一般呢,依賴項(xiàng)不太可能更改,因此他放在了獨(dú)立的層里面

8、寫分層形式的dockerfile

首先呢,需要在項(xiàng)目的POM 文件中增加一個(gè)支持

<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <layout>LAYERED_JAR</layout> </configuration> </plugin> </plugins></build>

jarmode是一個(gè)特殊的系統(tǒng)屬性,您可以在啟動(dòng)JAR時(shí)設(shè)置它。它允許引導(dǎo)代碼運(yùn)行與應(yīng)用程序完全不同的東西。例如,提取層的東西

這樣就可以運(yùn)行l(wèi)ayertools 模式

java -Djarmode=layertools -jar my-app.jar

項(xiàng)目搞好了呢,就重新編譯打包

mvn clean package

打包好了呢,我們就測(cè)試一下

java -Djarmode=layertools -jar target/demo-0.0.1-SNAPSHOT.jar list

可以看到他輸出了幾個(gè)層

dependenciessnapshot-dependenciesresourcesapplication

我們現(xiàn)在寫一個(gè)dockerfile 來提取并復(fù)制這幾個(gè)層來構(gòu)建鏡像

FROM adoptopenjdk:11-jre-hotspot as builderWORKDIR applicationARG JAR_FILE=target/*.jarCOPY ${JAR_FILE} application.jarRUN java -Djarmode=layertools -jar application.jar extractFROM adoptopenjdk:11-jre-hotspotWORKDIR applicationCOPY --from=builder application/dependencies/ ./COPY --from=builder application/snapshot-dependencies/ ./COPY --from=builder application/resources/ ./COPY --from=builder application/application/ ./ENTRYPOINT ['java', 'org.springframework.boot.loader.JarLauncher']

這是一個(gè)多階段的docker 文件,他builder 提取了需要的文件,就是前面我們拆掉的四個(gè)層。全給他弄進(jìn)去

然后我們開始構(gòu)建

docker build . --tag demo

構(gòu)建完了,我們就跑他一下

docker run -it -p8080:8080 demo:latest

到此這篇關(guān)于詳解如何用SpringBoot 2.3.0.M1創(chuàng)建Docker映像的文章就介紹到這了,更多相關(guān)SpringBoot 2.3.0.M1創(chuàng)建Docker映像內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
一本色道婷婷久久欧美| 福利91精品一区二区三区| 国产在线精品视频| 欧美中文字幕不卡| 丝袜美腿一区二区三区| 国产精品综合色区在线观看| 日韩一区中文字幕| 你懂的国产精品| 久久久精品tv| 91麻豆文化传媒在线观看| 欧美精品一区男女天堂| 大桥未久av一区二区三区中文| 欧美日韩不卡一区| 日韩激情在线观看| 色网站国产精品| 老司机精品视频线观看86 | 国产精品免费一区二区三区观看| 综合久久久久久久| www.久久久久久久久| 久久久久国产精品免费免费搜索| jvid福利写真一区二区三区| 精品国产乱子伦一区| 91亚洲国产成人精品一区二三| 国产清纯白嫩初高生在线观看91 | 1024精品合集| 99av国产精品欲麻豆| 亚洲一区二区三区精品在线| 亚洲欧美日本日韩| 日韩av成人高清| 欧美日韩在线播| 国产成人高清在线| 久久久久久久电影| 伊人久久av导航| 午夜在线成人av| 欧美区在线观看| 99精品桃花视频在线观看| 中文字幕第一区二区| 伊伊综合在线| 一区二区三区高清| 一本色道综合亚洲| 久久国产主播精品| 国产乱码精品一区二区三区av | 欧美激情在线| 亚洲三级在线播放| 午夜亚洲伦理| 韩国av一区二区三区| 欧美视频在线一区| 成人av网站在线| 亚洲欧洲美洲综合色网| 久久国产精品亚洲va麻豆| 蜜臀久久99精品久久久久宅男| 欧美丰满一区二区免费视频| 91在线porny国产在线看| 亚洲激情一二三区| 欧美日韩在线播放| 91色综合久久久久婷婷| 亚洲综合区在线| 91麻豆精品91久久久久同性| 欧美人与禽性xxxxx杂性| 亚洲v精品v日韩v欧美v专区 | 欧美一级黄色片| 欧美优质美女网站| 国产电影精品久久禁18| 国产亲近乱来精品视频 | 欧美日韩在线一区二区三区| 亚洲成av人片在www色猫咪| 在线电影国产精品| 欧美久久综合| 日日嗨av一区二区三区四区| 日韩欧美视频一区| 日韩午夜免费| 韩国一区二区视频| 中文子幕无线码一区tr| 久久一区精品| 99视频热这里只有精品免费| 亚洲精选在线视频| 91精品国产入口| 影音先锋久久久| 精品在线一区二区| 中文字幕一区二区三区在线不卡| 欧美色中文字幕| 国产精品二区影院| 精品一区二区影视| 亚洲私人黄色宅男| 91精品国产91久久久久久一区二区 | 99精品国产一区二区青青牛奶| 六月婷婷色综合| 国产日韩精品一区| 欧美三级电影一区| 亚洲一级特黄| 精东粉嫩av免费一区二区三区| 国产精品超碰97尤物18| 欧美日韩国产电影| 亚洲国产精品日韩| 国产.精品.日韩.另类.中文.在线.播放| 亚洲精品欧美二区三区中文字幕| 日韩亚洲欧美在线观看| 免费在线观看成人av| 成人av动漫网站| 日韩av中文字幕一区二区三区| 欧美国产激情一区二区三区蜜月| 日本道精品一区二区三区| 欧美激情1区2区| 伦理电影国产精品| 椎名由奈av一区二区三区| 欧美成人艳星乳罩| 久久综合狠狠| 亚洲免费不卡| 97久久超碰国产精品| 激情综合色丁香一区二区| 亚洲综合精品自拍| 国产日韩欧美一区二区三区综合| 欧美午夜电影网| 国产精品呻吟| 国精品一区二区三区| 国产91对白在线观看九色| 日韩精品福利网| 国产精品成人免费在线| 日韩欧美国产系列| 色欧美日韩亚洲| 一二三区精品| 欧美精品亚洲| 成人在线视频首页| 久久99精品久久久| 亚洲成人在线网站| 国产精品传媒视频| 国产调教视频一区| 日韩欧美三级在线| 欧美日韩第一区日日骚| 老司机亚洲精品| 亚洲久久视频| 国产综合18久久久久久| 成人国产在线观看| 国产一区二区h| 精品伊人久久久久7777人| 日精品一区二区| 亚洲综合一区二区| 国产精品久久久久久久久动漫| 精品国产亚洲一区二区三区在线观看| 欧美性受极品xxxx喷水| 久久精品中文字幕一区二区三区| 一区二区高清视频| 伊人久久婷婷| 狠狠色狠狠色综合人人| 91在线国产观看| 高清av一区二区| 紧缚捆绑精品一区二区| 日本视频中文字幕一区二区三区| 伊人色综合久久天天人手人婷| 国产精品成人免费在线| 欧美激情一区二区三区蜜桃视频| 精品国产区一区| 日韩欧美国产综合| 日韩一区二区免费在线观看| 7777精品伊人久久久大香线蕉经典版下载 | 在线日本成人| 欧美精品成人一区二区在线观看| 不卡视频免费播放| 丁香婷婷综合色啪| 国产精品一区在线| 国产精品资源在线| 国模冰冰炮一区二区| 久久精品国产澳门| 久久精工是国产品牌吗| 免费高清不卡av| 日本欧美肥老太交大片| 日本v片在线高清不卡在线观看| 亚洲成人你懂的| 一区二区三区不卡视频| 亚洲综合另类小说| 亚洲在线免费播放| 一区二区三区在线视频免费 | 日韩二区三区四区| 日韩av一级电影| 美国十次综合导航| 韩国三级电影一区二区| 国内精品嫩模私拍在线| 国产精品一区二区三区四区 | 香蕉久久夜色精品| 久久久久国产精品一区二区| 色综合久久88色综合天天6| 久久一区免费| 欧美亚洲尤物久久| 欧美日韩国产另类一区| 91精品免费观看| 欧美成人高清电影在线| 精品美女在线播放| 欧美国产激情一区二区三区蜜月| 中文字幕在线一区| 亚洲精品欧美专区| 婷婷成人激情在线网| 久久er精品视频| 国产精品亚洲视频| 不卡的av电影在线观看| 欧美日韩免费| 国产精品一区免费观看| 欧美综合一区二区| 日韩欧美综合在线| 亚洲国产成人自拍| 亚洲一二三区在线观看|