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

當前位置:首頁 > 科技  > 知識百科

Docker使用緩存編譯 Qt

來源: 責編: 時間:2023-08-07 16:30:41 234觀看
導讀 Docker 在使用層進行緩存方面做得很好。每個命令(例如,RUN、ADD 等)都會生成一個層,Docker 會在未來的構建中重用該層,除非發生某些變化。與往常一樣,這個過程也有例外,但一般來說

Docker 在使用層進行緩存方面做得很好。每個命令(例如,RUN、ADD 等)都會生成一個層,Docker 會在未來的構建中重用該層,除非發生某些變化。與往常一樣,這個過程也有例外,但一般來說這是正確的。另一種類型的緩存是針對容器內的特定操作(例如編譯源代碼)進行緩存。Lke28資訊網——每日最新資訊28at.com

在 Screenly,我們在 Docker 容器內創建了一個 Qt 構建環境。我們創建此 Qt 構建是為了確保構建過程可重現并易于在開發人員之間共享。由于 Qt 編譯過程需要很長時間,我們利用ccache來加速我們的 Qt 編譯。實施 ccache 需要從 Docker 環境外部卷安裝文件夾。Lke28資訊網——每日最新資訊28at.com

如果您是該項目的唯一開發人員,則上述步驟很有效。如果您希望能夠在團隊中共享緩存,會發生什么情況?Lke28資訊網——每日最新資訊28at.com

有幾種方法可以在 Docker 中實現這種緩存方式。Lke28資訊網——每日最新資訊28at.com

建立共享緩存的最簡單方法是按照我們在上一篇文章中所做的操作。我們使用磁盤緩存以及一些簡潔的功能來加速 BuildKit 中的緩存。然后我們壓縮緩存文件并將它們分發給團隊成員。這個過程不是很優雅,但它完成了工作。Lke28資訊網——每日最新資訊28at.com

如果我們想進一步自動化該過程,我們可以將檢索緩存作為構建過程的一部分。這方面的一個例子可能是這樣的:Lke28資訊網——每日最新資訊28at.com

RUN curl -o /tmp/build-cache.tgz https://some-domain.com/build-cache.tgz && /Lke28資訊網——每日最新資訊28at.com

tar xfz /tmp/build-cache.tgz -C /tmp && /Lke28資訊網——每日最新資訊28at.com

rm /tmp/build-cache.tgz
上面的過程很簡潔,但這確實意味著有人需要定期上傳構建緩存以保持緩存文件最新。此外,您需要在某個地方存儲文件(例如 S3)。Lke28資訊網——每日最新資訊28at.com

如果我們可以避免手動任務并使用原生 Docker 技術來做同樣的事情,那就太好了,對吧?事實證明,我們可以使用 Docker 來改進流程。我們只需要發揮我們的想象力。Lke28資訊網——每日最新資訊28at.com

正如我們在上一篇文章中展示的那樣,我們可以使用多階段構建在不同的 docker 鏡像之間復制數據。如果我們將緩存移動到專用的 Docker 映像會怎樣?然后我們可以將這個鏡像推送到 Docker Hub 并將其拉入構建過程。Lke28資訊網——每日最新資訊28at.com

這個過程很簡單。首先在 Docker Hub 中創建兩個不同的圖像。打電話給他們screenly/build-cache和screenly/build-env。在上一篇文章的基礎上,我們使用這個Dockerfile作為基礎screenly/build-env。Lke28資訊網——每日最新資訊28at.com

在 Dockerfile 中,我們將環境變量設置CCACHE_DIR為/src/ccache. 這一步告訴 ccache 緩存駐留在/src/ccache. 在上一篇文章中,該步驟只是將卷裝入系統。但是,在這種情況下,我們想要更改此步驟,以便緩存位于 之外/src,因為這用于批量安裝代碼庫,例如/usr/ccache.Lke28資訊網——每日最新資訊28at.com

我們現在可以啟動容器:Lke28資訊網——每日最新資訊28at.com

$ docker run --rm -t /
       -v ~/tmp/qt-src:/src /
       -v ~/tmp/qt-build:/build /
       -v ~/tmp/ccache:/usr/ccache /
       screenly-build-env
完成編譯后,您現在可以構建并推送我們的緩存映像。最終的 Dockerfile 將如下所示:Lke28資訊網——每日最新資訊28at.com

FROM scratchLke28資訊網——每日最新資訊28at.com

COPY ccache /ccache
要構建此映像,請使用以下代碼:Lke28資訊網——每日最新資訊28at.com

$ cd ~/tmp
       $ docker build /
       -f /path/to/Dockerfile /
       -t screenly/build-cache
       $ docker push screenly/build-cache
最后,您現在可以將這一層包含在screenly/build-env. 添加行:Lke28資訊網——每日最新資訊28at.com

COPY --from=screenly/build-cache /ccache /usr/ccache
下次重建screenly/build-env時,Docker 會自動拉下緩存。此外,您只需在刷新緩存時添加卷掛載。 Lke28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-119-2502-0.htmlDocker使用緩存編譯 Qt

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

上一篇: 使用Docker多階段多平臺編譯Qt

下一篇: Gartner指出云戰略制定過程中的十個常見錯誤

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 铁力市| 光山县| 土默特左旗| 团风县| 临潭县| 屏东市| 弋阳县| 青铜峡市| 池州市| 宝清县| 延边| 柘荣县| 米林县| 彭水| 城步| 金塔县| 香港 | 清河县| 平邑县| 公主岭市| 东山县| 连平县| 凭祥市| 惠水县| 讷河市| 修武县| 宜阳县| 治县。| 东安县| 汉川市| 通榆县| 塔城市| 丰原市| 仲巴县| 临湘市| 呼图壁县| 保靖县| 张家口市| 嘉峪关市| 虎林市| 定南县|