AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁(yè) > 科技  > 軟件

是時(shí)候放棄Dockerfile了,考慮上手Buildpack吧

來(lái)源: 責(zé)編: 時(shí)間:2023-10-26 17:09:57 243觀看
導(dǎo)讀介紹在容器化領(lǐng)域,效率、速度和簡(jiǎn)單性至關(guān)重要,Buildpack 已成為一種強(qiáng)大的工具,可以徹底改變項(xiàng)目創(chuàng)建 Docker 鏡像的過(guò)程。與需要費(fèi)力創(chuàng)建和維護(hù) Dockerfile 的傳統(tǒng)方法不同,Buildpack 提供了簡(jiǎn)化且自動(dòng)化的解決方案。使

介紹

在容器化領(lǐng)域,效率、速度和簡(jiǎn)單性至關(guān)重要,Buildpack 已成為一種強(qiáng)大的工具,可以徹底改變項(xiàng)目創(chuàng)建 Docker 鏡像的過(guò)程。與需要費(fèi)力創(chuàng)建和維護(hù) Dockerfile 的傳統(tǒng)方法不同,Buildpack 提供了簡(jiǎn)化且自動(dòng)化的解決方案。使用 Buildpack,我們可以輕松構(gòu)建 Docker 鏡像,無(wú)論項(xiàng)目數(shù)量多少。接下來(lái),我們將深入探討下 Buildpack 。OQV28資訊網(wǎng)——每日最新資訊28at.com

什么是Buildpack?

Buildpack 是一個(gè)方便的工具,可以為項(xiàng)目快速創(chuàng)建 Docker 鏡像,而無(wú)需單獨(dú)的Dockerfiles。因此,你可以高效地 Dockerize 多個(gè)項(xiàng)目,而無(wú)需為每個(gè)項(xiàng)目編寫Dockerfile 。Buildpack 會(huì)自動(dòng)檢測(cè)項(xiàng)目的編程語(yǔ)言和必要的依賴項(xiàng),例如pom.xml、build.gradle或requirements.txt文件,只需運(yùn)行一個(gè)簡(jiǎn)單的命令,即可輕松將項(xiàng)目集成到 CI/CD 管道中以自動(dòng)創(chuàng)建 Docker 鏡像。OQV28資訊網(wǎng)——每日最新資訊28at.com

Dockerfile VS Buildpack

使用 Buildpack 比使用 Dockerfile 要容易得多,因?yàn)槭褂?Buildpack 時(shí),你不需要編寫Dockerfile,只需運(yùn)行一個(gè)簡(jiǎn)單的命令即可為項(xiàng)目創(chuàng)建 Docker 鏡像。Buildpack的另一個(gè)優(yōu)點(diǎn)是多階段的處理。當(dāng)我們?yōu)轫?xiàng)目編寫 Dockerfile 時(shí),必須創(chuàng)建一個(gè)多階段 Dockerfile,其中一個(gè)階段用于構(gòu)建(例如,對(duì)于使用 Maven 或 Gradle 的Java項(xiàng)目),另一個(gè)階段用于運(yùn)行(運(yùn)行應(yīng)用程序所需的依賴項(xiàng))。例如,運(yùn)行 Java 應(yīng)用程序只需要 JRE,而不需要 Maven/Gradle 或其他構(gòu)建工具。OQV28資訊網(wǎng)——每日最新資訊28at.com

OQV28資訊網(wǎng)——每日最新資訊28at.com

如果你希望創(chuàng)建一個(gè)高效的 Java/Spring Boot/Maven Dockerfile 項(xiàng)目,你需要制作一個(gè)兩階段的 Dockerfile,第一階段build stage,第二階段run stage:OQV28資訊網(wǎng)——每日最新資訊28at.com

####################### build stage #######################FROM openjdk:8u342-slim-buster RUN apt update & apt install -y curl tar bash ca-certificates gnupgENV NODE_MAJOR=16RUN mkdir -p /etc/apt/keyrings && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.listRUN apt update && apt install nodejs -yARG MAVEN_VERSION=3.6.3ARG BASE_URL=https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binariesRUN mkdir -p /usr/share/maven /usr/share/maven/ref /  && echo "Downlaoding maven" /  && curl -fsSL -o /tmp/apache-maven.tar.gz ${BASE_URL}/apache-maven-${MAVEN_VERSION}-bin.tar.gz /  && echo "Unziping maven" /  && tar -xzf /tmp/apache-maven.tar.gz -C /usr/share/maven --strip-components=1 /  && echo "Cleaning and setting links" /  && ln -s /usr/share/maven/bin/mvn /usr/bin/mvnWORKDIR /workspaceADD . /workspace RUN mvn clean packageRUN mv target/*.jar target/app.jar####################### run stage #######################FROM openjdk:8u342-slim-buster WORKDIR /workspaceCOPY --from=0 /workspace/target/app.jar .ENTRYPOINT ["java", "-jar", "app.jar"]

上面的Dockerfile內(nèi)容相當(dāng)復(fù)雜,你需要了解 Docker 中多階段的概念才能理解其中發(fā)生的事情。然而,Buildpack 可以讓它變得簡(jiǎn)單,并且會(huì)以不同的方式生成 Docker 鏡像。OQV28資訊網(wǎng)——每日最新資訊28at.com

左邊Buildpack,右邊Dockerfile左邊Buildpack,右邊DockerfileOQV28資訊網(wǎng)——每日最新資訊28at.com

什么時(shí)候使用Dockerfile

使用 Buildpack 的情況包括:OQV28資訊網(wǎng)——每日最新資訊28at.com

1. 沒(méi)有源代碼倉(cāng)庫(kù)的寫權(quán)限,但項(xiàng)目構(gòu)建時(shí)需要Dockerfile。如果無(wú)法訪問(wèn)源代碼倉(cāng)庫(kù)的寫權(quán)限,可以使用一個(gè)工具在運(yùn)行時(shí)生成Dockerfile并構(gòu)建Docker鏡像,而無(wú)需暴露實(shí)際的Dockerfile。這樣可以簡(jiǎn)化流程。OQV28資訊網(wǎng)——每日最新資訊28at.com

2. 如果源代碼倉(cāng)庫(kù)中包含多種編程語(yǔ)言的代碼,最好不要使用Buildpack,因?yàn)榭赡苄枰M(jìn)行大量的定制來(lái)指示項(xiàng)目是用多種語(yǔ)言編寫的。OQV28資訊網(wǎng)——每日最新資訊28at.com

3. 使用Buildpack非常簡(jiǎn)單和直接,當(dāng)你想要節(jié)省時(shí)間和精力時(shí),它是一個(gè)極好的選擇!OQV28資訊網(wǎng)——每日最新資訊28at.com

安裝Buildpack

安裝 Buildpack 非常簡(jiǎn)單,可以從其 GitHub 版本頁(yè)面下載并安裝:https://github.com/buildpacks/pack。OQV28資訊網(wǎng)——每日最新資訊28at.com

$ wget https://github.com/buildpacks/pack/releases/download/v0.31.0/pack-v0.31.0-linux.tgz$ tar -xvzf pack-v0.31.0-linux.tgz$ sudo mv pack /usr/bin/

使用Buildpack

示例如下:OQV28資訊網(wǎng)——每日最新資訊28at.com

$ git clone https://github.com/paketo-buildpacks/samples$ cd samples/java/gradle$ pack build testjavadocker --env BP_JVM_VERSION=17$ docker run --rm testjavadocker

Buildpack存在的問(wèn)題

  1. 無(wú)法在低版本Docker上運(yùn)行需要高于 Docker 版本20才能使用較新版本的builder-jammy-base映像生成器。我在構(gòu)建計(jì)算機(jī)上使用 Docker 版本19.03.5,使用 Buildpack 時(shí)遇到問(wèn)題,發(fā)生了以下錯(cuò)誤:
$ pack build test --builder=buildpacks/builder-jammy-base:0.1.0...===> ANALYZINGImage with name "test" not found===> DETECTING======== Output: paketo-buildpacks/leiningen@4.5.1 ========runtime/cgo: pthread_create failed: Operation not permittedSIGABRT: abortPC=0x7f8c2afb8a7c m=0 sigcode=18446744073709551610goroutine 0 [idle]:runtime: unknown pc 0x7f8c2afb8a7cstack: frame={sp:0x7fffb88316a0, fp:0x0} stack=[0x7fffb8032bf8,0x7fffb8831c30)0x00007fffb88315a0:  0x00007f8c2b13c723  0x00007f8c2b13c723
  1. 不支持 Maven 小版本自定義。Buildpack paketo-buildpacks/maven不支持更改Maven的小版本。如果項(xiàng)目無(wú)法使用Maven 3的最新版本進(jìn)行編譯,則需要改用Maven Wrapper。使用Maven Wrapper非常簡(jiǎn)單;只需要運(yùn)行以下命令為項(xiàng)目初始化Maven Wrapper即可:
$ mvn wrapper:wrapper -Dmaven=3.6.3$ ./mvnw clean package
  1. Buildpack 環(huán)境變量是不可變的。默認(rèn)情況下,Buildpack 會(huì)在構(gòu)建容器中設(shè)置一些默認(rèn)環(huán)境變量。有時(shí)你可能需要修改或刪除這些變量,但是,你只能修改,不能刪除。
  2. 多語(yǔ)言項(xiàng)目較難處理。如果你正在處理多語(yǔ)言項(xiàng)目,最好不要使用 Buildpack。雖然 Buildpack 確實(shí)支持多語(yǔ)言項(xiàng)目,但自定義時(shí)可能非常耗時(shí)。例如,我們有一個(gè)基于Spring framework作為后端和Vue.js前端的項(xiàng)目,要為其創(chuàng)建一個(gè) Docker 鏡像。兩個(gè)部分都在一個(gè)項(xiàng)目中,我們必須指定以下參數(shù)來(lái)告訴 Buildpack 這是一個(gè)多語(yǔ)言項(xiàng)目:
    - BP_JVM_VERSION:描述項(xiàng)目的 Java 版本。
    - BP_NODE_VERSION:指定構(gòu)建項(xiàng)目所需的 Node.js 版本。
    - BP_JAVA_INSTALL_NODE:要求 Buildpack 在構(gòu)建容器上安裝 Node。
    - BP_NODE_PROJECT_PATH:指定 Vue.js 文件在項(xiàng)目中的位置。
    定制過(guò)程可能非常復(fù)雜,尤其是對(duì)于多語(yǔ)言項(xiàng)目(不過(guò)這種場(chǎng)景一般不多)。
pack build test /    --env 'BP_JVM_VERSION=8' /    --env 'BP_MAVEN_BUILD_ARGUMENTS=clean package install -U' /    --env 'BP_NODE_VERSION=16.20.0' /    --env 'BP_JAVA_INSTALL_NODE=true' /    --env 'BP_NODE_PROJECT_PATH=src/main/frontend'    --builder=buildpacks/builder-jammy-base:0.1.0
  • 無(wú)互聯(lián)網(wǎng)下的運(yùn)行問(wèn)題。buildpack 高度依賴互聯(lián)網(wǎng),如果你的構(gòu)建環(huán)境是純內(nèi)網(wǎng)的(出于安全原因),需要更改下載源。

結(jié)論

在容器化時(shí)代,Buildpack 作為一種改變游戲規(guī)則的工具出現(xiàn),可以簡(jiǎn)化為項(xiàng)目制作 Docker 鏡像的過(guò)程。它提供了一種自動(dòng)化且高效的方法,消除傳統(tǒng) Dockerfile 創(chuàng)建和維護(hù)的復(fù)雜性。憑借其能夠輕松構(gòu)建 Docker 鏡像且無(wú)需 Dockerfile 的能力,使開(kāi)發(fā)人員能夠無(wú)縫處理多個(gè)項(xiàng)目。它擅長(zhǎng)識(shí)別項(xiàng)目的編程語(yǔ)言和結(jié)構(gòu),允許自動(dòng)創(chuàng)建 Docker 鏡像,并將其無(wú)縫集成到 CI/CD 管道中。趕緊試試吧!OQV28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-15182-0.html是時(shí)候放棄Dockerfile了,考慮上手Buildpack吧

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 別再用 float 布局了,flex 才是未來(lái)!

下一篇: 被問(wèn)到ReentrantLock你真的能答好嗎?

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 5月iOS設(shè)備性能榜:M1 M2依舊是榜單前五

    和上個(gè)月一樣,沒(méi)有新品發(fā)布的iOS設(shè)備性能榜的上榜設(shè)備并沒(méi)有什么更替,僅僅只有跑分變化而產(chǎn)生的排名變動(dòng),剛剛開(kāi)始的蘋果WWDC2023,推出的產(chǎn)品也依舊是新款Mac Pro、新款Mac Stu
  • 一文搞定Java NIO,以及各種奇葩流

    大家好,我是哪吒。很多朋友問(wèn)我,如何才能學(xué)好IO流,對(duì)各種流的概念,云里霧里的,不求甚解。用到的時(shí)候,現(xiàn)百度,功能雖然實(shí)現(xiàn)了,但是為什么用這個(gè)?不知道。更別說(shuō)效率問(wèn)題了~下次再遇到,
  • 梁柱接棒兩年,騰訊音樂(lè)闖出新路子

    文丨田靜 出品丨牛刀財(cái)經(jīng)(niudaocaijing)7月5日,企鵝FM發(fā)布官方公告稱由于業(yè)務(wù)調(diào)整,將于9月6日正式停止運(yùn)營(yíng),這意味著騰訊音樂(lè)長(zhǎng)音頻業(yè)務(wù)走向消亡。騰訊在長(zhǎng)音頻領(lǐng)域還在摸索。為
  • 得物寵物生意「狂飆」,發(fā)力“它經(jīng)濟(jì)”

    作者|花花小萌主近日,得物宣布正式上線寵物鑒別,通過(guò)得物App內(nèi)的“在線鑒別”,可找到鑒別寵物的選項(xiàng)。通過(guò)上傳自家寵物的部位細(xì)節(jié),就能收獲擁有專業(yè)資質(zhì)認(rèn)證的得物鑒
  • ESG的面子與里子

    來(lái)源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之三伏大幕拉起,各地高溫預(yù)警不絕,但處于厄爾尼諾大“烤”之下的除了眾生,還有各大企業(yè)發(fā)布的ESG報(bào)告。ESG是“環(huán)境保
  • 郭明錤稱華為和江淮汽車合作開(kāi)發(fā)問(wèn)界MPV,定價(jià)100萬(wàn)左右、計(jì)劃明年量產(chǎn)

    8 月 1 日消息,郭明錤今天在 Medium 平臺(tái)發(fā)布博文,稱華為正在和江淮汽車合作,開(kāi)發(fā)售價(jià)在 100 萬(wàn)元的問(wèn)界 MPV,預(yù)計(jì)在 2024 年第 2 季度量產(chǎn),銷量目標(biāo)為
  • 三星獲批量產(chǎn)iPhone 15全系屏幕:蘋果史上最驚艷直屏

    按照慣例,蘋果將繼續(xù)在今年9月舉辦一年一度的秋季新品發(fā)布會(huì),有傳言稱發(fā)布會(huì)將于9月12日舉行,屆時(shí)全新的iPhone 15系列將正式與大家見(jiàn)面,不出意外的話
  • iQOO 11S或7月上市:搭載“雞血版”驍龍8Gen2 史上最強(qiáng)5G Soc

    去年底,iQOO推出了“電競(jìng)旗艦”iQOO 11系列,作為一款性能強(qiáng)機(jī),iQOO 11不僅全球首發(fā)2K 144Hz E6全感屏,搭載了第二代驍龍8平臺(tái)及144Hz電競(jìng)屏,同時(shí)在快充
  • 聯(lián)想小新Pad Pro 12.6將要推出,搭載高通驍龍 870 處理器

    聯(lián)想小新Pad Pro 12.6將于秋季新品會(huì)上推出,官方按照慣例直接在發(fā)布會(huì)前給出了機(jī)型的所有參數(shù)。聯(lián)想小新 Pad Pro 12.6 將搭載高通驍龍 870 處理器,重量為 5
Top