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

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

是時候放棄Dockerfile了,考慮上手Buildpack吧

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

介紹

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

什么是Buildpack?

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

Dockerfile VS Buildpack

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

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

如果你希望創(chuàng)建一個高效的 Java/Spring Boot/Maven Dockerfile 項目,你需要制作一個兩階段的 Dockerfile,第一階段build stage,第二階段run stage:wIF28資訊網(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)容相當復雜,你需要了解 Docker 中多階段的概念才能理解其中發(fā)生的事情。然而,Buildpack 可以讓它變得簡單,并且會以不同的方式生成 Docker 鏡像。wIF28資訊網(wǎng)——每日最新資訊28at.com

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

什么時候使用Dockerfile

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

1. 沒有源代碼倉庫的寫權限,但項目構建時需要Dockerfile。如果無法訪問源代碼倉庫的寫權限,可以使用一個工具在運行時生成Dockerfile并構建Docker鏡像,而無需暴露實際的Dockerfile。這樣可以簡化流程。wIF28資訊網(wǎng)——每日最新資訊28at.com

2. 如果源代碼倉庫中包含多種編程語言的代碼,最好不要使用Buildpack,因為可能需要進行大量的定制來指示項目是用多種語言編寫的。wIF28資訊網(wǎng)——每日最新資訊28at.com

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

安裝Buildpack

安裝 Buildpack 非常簡單,可以從其 GitHub 版本頁面下載并安裝:https://github.com/buildpacks/pack。wIF28資訊網(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

示例如下:wIF28資訊網(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存在的問題

  1. 無法在低版本Docker上運行需要高于 Docker 版本20才能使用較新版本的builder-jammy-base映像生成器。我在構建計算機上使用 Docker 版本19.03.5,使用 Buildpack 時遇到問題,發(fā)生了以下錯誤:
$ 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的小版本。如果項目無法使用Maven 3的最新版本進行編譯,則需要改用Maven Wrapper。使用Maven Wrapper非常簡單;只需要運行以下命令為項目初始化Maven Wrapper即可:
$ mvn wrapper:wrapper -Dmaven=3.6.3$ ./mvnw clean package
  1. Buildpack 環(huán)境變量是不可變的。默認情況下,Buildpack 會在構建容器中設置一些默認環(huán)境變量。有時你可能需要修改或刪除這些變量,但是,你只能修改,不能刪除。
  2. 多語言項目較難處理。如果你正在處理多語言項目,最好不要使用 Buildpack。雖然 Buildpack 確實支持多語言項目,但自定義時可能非常耗時。例如,我們有一個基于Spring framework作為后端和Vue.js前端的項目,要為其創(chuàng)建一個 Docker 鏡像。兩個部分都在一個項目中,我們必須指定以下參數(shù)來告訴 Buildpack 這是一個多語言項目:
    - BP_JVM_VERSION:描述項目的 Java 版本。
    - BP_NODE_VERSION:指定構建項目所需的 Node.js 版本。
    - BP_JAVA_INSTALL_NODE:要求 Buildpack 在構建容器上安裝 Node。
    - BP_NODE_PROJECT_PATH:指定 Vue.js 文件在項目中的位置。
    定制過程可能非常復雜,尤其是對于多語言項目(不過這種場景一般不多)。
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
  • 無互聯(lián)網(wǎng)下的運行問題。buildpack 高度依賴互聯(lián)網(wǎng),如果你的構建環(huán)境是純內(nèi)網(wǎng)的(出于安全原因),需要更改下載源。

結論

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

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

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

上一篇: 別再用 float 布局了,flex 才是未來!

下一篇: 被問到ReentrantLock你真的能答好嗎?

標簽:
  • 熱門焦點
  • 一加首款折疊屏!一加Open渲染圖出爐:罕見單手可握小尺寸

    8月5日消息,此前就有爆料稱,一加首款折疊屏手機將會在第三季度上市,如今隨著時間臨近,新機的各種消息也開始浮出水面。據(jù)悉,這款新機將會被命名為“On
  • Automa-通過連接塊來自動化你的瀏覽器

    1、前言通過瀏覽器插件可實現(xiàn)自動化腳本的錄制與編寫,具有代表性的工具就是:Selenium IDE、Katalon Recorder,對于簡單的業(yè)務來說可快速實現(xiàn)自動化的上手工作。Selenium IDEKat
  • 花7萬退貨退款無門:誰在縱容淘寶珠寶商家造假?

    來源:極點商業(yè)作者:楊銘在淘寶購買珠寶玉石后,因為保證金不夠賠付,店鋪關閉,退貨退款難、維權無門的比比皆是。“提供相關產(chǎn)品鑒定證書,支持全國復檢,可以30天無理由退換貨。&
  • 阿里大調整

    來源:產(chǎn)品劉有媒體報道稱,近期淘寶天貓集團啟動了近年來最大的人力制度改革,涉及員工績效、層級體系等多個核心事項,目前已形成一個初步的“征求意見版”:1、取消P序列
  • 微博大門常打開,迎接海外畫師漂洋東渡

    作者:互聯(lián)網(wǎng)那些事“起猛了,我能看得懂日語了”。“為什么日本人說話我能聽懂?”“中文不像中文,日語不像日語,但是我竟然看懂了”…&hell
  • 2納米決戰(zhàn)2025

    集微網(wǎng)報道 從三強爭霸到四雄逐鹿,2nm的廝殺聲已然隱約傳來。無論是老牌勁旅臺積電、三星,還是誓言重回先進制程領先地位的英特爾,甚至初成立不久的新
  • 2022爆款:ROG魔霸6 冰川散熱系統(tǒng)持續(xù)護航

    喜逢開學季,各大商家開始推出自己的新產(chǎn)品,進行打折促銷活動。對于忠實的端游愛好者來說,能夠擁有一款夢寐以求的筆記本電腦是一件十分開心的事。但是現(xiàn)在的
  • 蘋果MacBook Pro 2021測試:仍不支持平滑滾動

    據(jù)10月30日9to5 Mac 消息報道,蘋果新的 14 英寸和 16 英寸 MacBook Pro 2021 上市后獲得了不錯的評價,亮點包括行業(yè)領先的性能,令人印象深刻的電池續(xù)航,精美豐
  • 利用職權私自解除被封帳號 Meta開除20多名員工

    11月18日消息,據(jù)外媒援引知情人士表示,過去一年時間內(nèi),F(xiàn)acebook母公司Meta解雇或處罰了20多名員工以及合同工,指控這些人通過內(nèi)部系統(tǒng)以不當方式重置用戶帳號,其
Top 主站蜘蛛池模板: 象州县| 门头沟区| 呼和浩特市| 湖口县| 梁平县| 枝江市| 化隆| 广丰县| 和田市| 突泉县| 明溪县| 伊宁县| 肃南| 三都| 北碚区| 清徐县| 秀山| 沙湾县| 思南县| 灵川县| 中牟县| 宁安市| 民丰县| 蕲春县| 塔河县| 遂宁市| 许昌市| 屯门区| 古蔺县| 疏附县| 鹤壁市| 天峻县| 滨海县| 灵武市| 沙河市| 海兴县| 禹州市| 遂平县| 娄底市| 兴业县| 久治县|