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

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

Docker使用緩存編譯 Qt

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

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

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

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

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

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

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

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

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

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

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

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

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

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

我們現在可以啟動容器:rrV28資訊網——每日最新資訊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 將如下所示:rrV28資訊網——每日最新資訊28at.com

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

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

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

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

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

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

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

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

標簽:
  • 熱門焦點
  • Find N3入網:最高支持16+1TB

    OPPO將于近期登場的Find N3折疊屏目前已經正式入網,型號為PHN110。本次Find N3在外觀方面相比前兩代有很大的變化,不再是小號的橫向折疊屏,而是跟別的廠商一樣采用了較為常見的
  • 一文看懂為蘋果Vision Pro開發應用程序

    譯者 | 布加迪審校 | 重樓蘋果的Vision Pro是一款混合現實(MR)頭戴設備。Vision Pro結合了虛擬現實(VR)和增強現實(AR)的沉浸感。其高分辨率顯示屏、先進的傳感器和強大的處理能力
  • 猿輔導與新東方的兩種“歸途”

    作者|卓心月 出品|零態LT(ID:LingTai_LT)如何成為一家偉大企業?答案一定是對“勢”的把握,這其中最關鍵的當屬對企業戰略的制定,且能夠站在未來看現在,即使這其中的
  • 華為Mate 60系列用上可變靈動島:正式版體驗將會更出色

    這段時間以來,關于華為新旗艦的爆料日漸密集。據此前多方爆料,今年華為將開始恢復一年雙旗艦戰略,除上半年推出的P60系列外,往年下半年的Mate系列也將
  • 三星Galaxy Z Fold5官方渲染圖曝光:13.4mm折疊厚度依舊感人

    據官方此前宣布,三星將于7月26日在韓國首爾舉辦Unpacked活動,屆時將帶來帶來包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy Z Flip 5、
  • iQOO 11S評測:行業唯一的200W標準版旗艦

    【Techweb評測】去年底,iQOO推出了“電競旗艦”iQOO 11系列,作為一款性能強機,該機不僅全球首發2K 144Hz E6全感屏,搭載了第二代驍龍8平臺及144Hz電競
  • 超級標準版旗艦!iQOO 11S全球首發iQOO超算獨顯芯片

    上半年已接近尾聲,截至目前各大品牌旗下的頂級旗艦都已悉數亮相,而下半年即將推出的頂級旗艦已經成為了數碼圈爆料的主流,其中就包括全新的iQOO 11S系
  • 首發天璣9200+ iQOO Neo8系列發布首銷售價2299元起

    2023年5月23日晚,iQOO Neo8系列正式發布。其中,Neo系列首款Pro之作——iQOO Neo8 Pro強悍登場,限時售價3099元起;價位段最強性能手機iQOO Neo8同期上市
  • Android 14發布:首批適配機型公布

    5月11日消息,谷歌在今天凌晨舉行了I/O大會,本次發布會谷歌帶來了自家的AI語言模型PaLM 2、谷歌Pixel Fold折疊屏、谷歌Pixel 7a手機,同時發布了Androi
Top 主站蜘蛛池模板: 耒阳市| 四会市| 称多县| 清远市| 梁平县| 安岳县| 洪泽县| 杭州市| 同德县| 博爱县| 巩留县| 鹤壁市| 酉阳| 射阳县| 容城县| 广水市| 丘北县| 依兰县| 蓬莱市| 崇左市| 嘉义县| 芮城县| 新邵县| 濉溪县| 始兴县| 南雄市| 鲁山县| 安达市| 垦利县| 齐齐哈尔市| 吴忠市| 瓮安县| 华阴市| 威海市| 如东县| 夏河县| 禄丰县| 辽宁省| 广汉市| 锡林郭勒盟| 巴彦淖尔市|