第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何優(yōu)化多個相關(guān) maven java 項目的 docker 構(gòu)建?(緩存)

如何優(yōu)化多個相關(guān) maven java 項目的 docker 構(gòu)建?(緩存)

茅侃侃 2021-11-17 10:35:12
我管理著一個大型專有系統(tǒng),該系統(tǒng)在 Java 中受到了大約十幾個服務(wù)的影響。我們有一組核心的 java 庫,它們都共享),并且所有組件/應(yīng)用程序都是使用 maven 構(gòu)建的。在核心 SDK jar 之外,盡管每個應(yīng)用程序都有自己獨特的依賴項集。我無法弄清楚在 docker 內(nèi)部構(gòu)建和部署的最佳方法是什么。理想情況下,我希望整個生命周期都在 docker 中,使用多階段構(gòu)建方法。但是,我看不到如何使用大量依賴項來優(yōu)化它??雌饋砦铱梢宰鰞煞N方法。像以前一樣構(gòu)建,使用 maven 和 CI 服務(wù)器 (jenkins) 上的公共緩存,以便獲取依賴項并緩存一次,并且所有應(yīng)用程序都可以訪問。然后為每個應(yīng)用程序創(chuàng)建一個 dockerfile,將產(chǎn)品 jar 及其依賴項(或胖 jar)復(fù)制到容器中,并將其設(shè)置為執(zhí)行。這種方法的缺點是構(gòu)建本身可能在開發(fā)人員和 CI 服務(wù)器之間有所不同??赡軙褂孟?nexus 這樣的本地 Maven 緩存來避免每次都從互聯(lián)網(wǎng)上拉取 deps?但這仍然不能解決開發(fā)構(gòu)建不一定匹配 CI 構(gòu)建環(huán)境的問題。為每個項目使用多階段 dockerfile。我試過這個,它確實有效,我設(shè)法讓 maven 依賴層緩存,這樣它就不會太頻繁地獲取。不幸的是,每個應(yīng)用程序的中間構(gòu)建層達(dá)到了 1-2gb,我無法從守護(hù)程序中刪除“懸空”中間體,否則所有緩存都被吹走了。這也意味著如果 poms 中的某些內(nèi)容發(fā)生變化,則必須為每個應(yīng)用程序下載 jar 中的大量重復(fù)。(即它們都使用 junit 和 log4j 以及許多其他相似之處)有沒有辦法以最佳方式解決這個我沒有看到的問題?我發(fā)現(xiàn)的所有博客基本上都集中在上面的 2 種方法上(有些則專注于在容器中運行 maven 本身,這對我來說真的沒有解決任何問題)。如果沒有任何其他好的解決方案,我可能最終需要選擇選項 1。我已經(jīng)查看了 stackoverflow 和博客,我能找到的所有內(nèi)容似乎都假設(shè)您實際上只是在構(gòu)建一個應(yīng)用程序而不是其中的一個套件,因此不重復(fù)依賴項下載變得很重要。
查看完整描述

1 回答

?
人到中年有點甜

TA貢獻(xiàn)1895條經(jīng)驗 獲得超7個贊

我認(rèn)為只要您--update-snapshots在 Maven 構(gòu)建中設(shè)置該選項,就可以使用 .m2/repository 文件系統(tǒng)緩存。它可以更好地擴(kuò)展,因為您在每個構(gòu)建環(huán)境中只緩存每個 .jar 一次,而不是每個應(yīng)用程序一次。此外,單個依賴項的更改不會使整個緩存失效,如果您使用 docker-layer-caching,就會出現(xiàn)這種情況。

不幸的是,目前這不能與多階段構(gòu)建很好地結(jié)合,但您并不是唯一需要它的人。 此問題要求向--volumedocker build 命令添加一個選項。這一個請求允許在Dockerfile這樣的說明:RUN --mount=m2repo=/var/mvn/repo mvn install。

這兩個功能都允許您在多階段構(gòu)建期間使用本地 Maven 文件系統(tǒng)緩存。

目前我建議保留您的選項 1 作為解決方案,除非您面臨許多由于不同的構(gòu)建環(huán)境而導(dǎo)致的問題。


查看完整回答
反對 回復(fù) 2021-11-17
  • 1 回答
  • 0 關(guān)注
  • 229 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號