Docker使用缓存编译 Qt
Docker 在使用层进行缓存方面做得很好。每个命令(例如,RUN、ADD 等)都会生成一个层,Docker 会在未来的构建中重用该层,除非发生某些变化。与往常一样,这个过程也有例外,但一般来说这是正确的。另一种类型的缓存是针对容器内的特定操作(例如编译源代码Do)进行缓存。
在 Screenly,我们在 Docker 容器内创建了一个 Qt 构建环境。我们创建此 Qt 构建是为了确保构建过程可重现并易于在开发人员之间共享。由于 Qt 编译过程需要很长时间,我们利用ccache来加速我们的 Qt 编译。实施 ccache 需要从 Docker 环ck境外部卷安装文件夹。
如果您是该项目的唯一开发人员,则上述步骤很有效。如果您希望能够在团队中共享缓存,会发生什么情况?
有几种方法可以在 Docker 中实现这种缓存方式。
建立共享缓存的最简单方法是按照我们在上一篇文章中所做的操作。我们使用磁盘缓存以及一些简洁的功能来加er速 BuildKit 中的缓存。然后我们压缩缓存文件并将它们分发给团队成员。这个过程不是很优雅,但它完成了工作。
如果我们想进一步自动化该过程,我们可以将检索缓存作为构建过程的一部分。这方面的一个例子可能是这样的:
RUN curl -o /tmp/build-cache使用.tgz https://some-domain.com/build-cache.tgz && \
tar xfz /tmp/build-cache.tgz -C /tmp && \
rm /tmp/build-cache.tgz
上面的过程很简洁,但这确实缓存意味着有人需要定期上传构建缓存以保持缓存文件最新。此外,您需要在某个地方存储文件(例如 S3)。
如果我们可以避免手动任务并使用原生 Docker 技术来做同样的事情,那就太好了,对吧?事实证明,我们可以使用 Docker 来改进流程。我们只需要发挥我们的想象力。
正如我们在编译上一篇文章中展示的那样,我们可以使用多阶段构建在不同的 docker 镜像之间复制数据。如果我们将缓存移动到专用的 Docker 映像会怎样?然后我们可以将这个镜像推送到 Docker Hub 并将其拉入构建过程。
这个过程很简单。首先在 Docker Hub 中创建两个不同的图像 Q。打电话给他们screenly/build-cache和screenly/build-env。在上一篇文章的基础上,我们使用这个Dockerfile作为基础screenly/build-env。
在 Dockerfile 中,我们将环境变量设置CCACHE_DDoIR为/src/ccache. 这一步告诉 ccache 缓存驻留在/src/ccache. 在上一篇文章中,该步骤只是将卷装入系统。但是,在这种情况下,我们想要更改此步骤,以便缓存位于 之外/src,因为这用于批量安装代码库,例如/usr/ccache.
我们现在可以启ck动容器:
$ docker run --rm -t \
-v ~/tmp/qt-src:/src \
-v ~/tmp/qt-build:/build \
&nerbsp; -v ~/tmp/ccache:/usr/ccache \
screenly-build-env
完成编译后,您现在可以构建并推送我们的缓存映像。最终的 Dockerfile 将如下所示:
FROM scr使用atch
COPY ccache /ccache
要构建此映像,请使用以下代码:
$ cd ~/tmp
$ docker build \
-f /path/to/Dockerfile \
&n缓存bsp; -t screenly/build-cache
$ docker push screenly/build-cache
最后,您现在可以将这一层包含在screenly/build-env编译. 添加行:
COPY --from=screenly/build-cache /ccache /usr/ccache
下次重建screenly/build-env时,Docker 会自动拉下缓存。此外,您只需在刷新缓存时添加卷挂载。
(责任编辑:售后支持)
-
金山办公半年报:AI月活用户突破2900万,WPS365营收暴增62%
金山办公(688111)发布2025年半年报,展现出稳健的增长态势。公司上半年实现营业收入26.57亿元,同比增长10.12%;归属于母公司所有者净利润7.47亿元,同比增长3.57%;扣非净利润7....[详细]
-
开源AI智能体平台LangChain完成1.25亿美元融资:估值达12.5亿美元成为独角兽
开源AI智能体框架提供商LangChain周一宣布完成1. 25 亿美元融资,公司估值达到12. 5 亿美元,正式跻身独角兽行列。TechCrunch曾在 7 月报道,这家提供流行开源框架用于构建AI...[详细]
-
云梦级3月20日云梦级消息,3月20日,位于北京环球度假区内的《原神》羽球节互动主题区“庆典!砰砰大行动”正式开幕 。这是继去年春季推出“颂花盈皎宴”互动主题餐厅后,双方的再次联动。同时,这也是北京环...[详细]
-
标签: 百度智能云 DuClaw 千帆CodingPlan OpenClaw
云梦级3月11日云梦级消息,百度智能云今日宣布推出 DuClaw,帮助用户“零门槛养虾”。DuClaw 是百度智能云面向零基础用户推出的零部署 OpenClaw 服务,宣称无需选择镜像,无需部署云服务...[详细]
-
MIT博士生、北大校友,利用自监督算法,解决了数据集中这一常见的“难题”
本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。 训练模型时,你是否也遭遇过这样的“尴尬”时刻: 好不容易找到了自己想要的数据集,结果点进去一看,大部分样本都是一类物体。(...[详细]
-
Hailuo 2.3即将上线:超越 Veo 的新一代 AI 视频模型,逼真度再升级
MiniMax 宣布即将发布其旗舰视频生成模型的最新版本—— Hailuo2.3 。这款新一代模型在真实感、精准度与风格多样性方面实现了显著突破,被业界视为 AI 视频生成领域的一次重大飞跃。 性能再...[详细]
-
使用UPS电源时,会出现不同的报警,每一次出现报警所代表意义都不一样,现针对UPS电源常见报警而作诠释,具体如下: 1. 主输入电源故障或整流输入开关断开 输入相电压不在(165~250)VAC范围内...[详细]
-
Liquid AI发布 LFM2-8B-A1B:8B 参数仅激活1.5B,手机上跑出4B级AI速度!
高效MoE架构重塑边缘AILiquid AI推出的LFM2-8B-A1B是其LFM2系列的首个混合专家(Mixture-of-Experts, MoE)模型,总参数规模达8.3B,但每token仅激活...[详细]
-
韭菜花产地和上市时间?韭菜花也叫韭花,在七月份左右上市。其中韭菜包含春韭,在春天食用;韭黄颜色淡黄,味道鲜美。韭白就是韭菜的茎,也叫韭苔;而韭菜花是一种常食用的佐料,可以和。韭菜花是几月份上市-九州醉...[详细]
-
Docker 中的多平台如何工作? 在 Docker 中使用多平台功能的最简单方法是从命令行调用它。使用docker buildx,我们可以利用新的测试版功能。通过运行docker buildx bu...[详细]
- https://www.polar-tech.com/?action=QUERY&s=谷歌留痕教程【tg:seogoogle987】,ABP
- https://www.samen-maier.at/search/谷歌留痕教程【tg:seogoogle987】,uS0
- https://www.reginatangoshoes.com/en/catalogsearch/result/index/?T=1686132113407&q=谷歌留痕教程【tg:seogoogle987】,LGK
- https://www.mintos.org/?s=谷歌留痕教程【tg:seogoogle987】,7O8
- https://www.kuaikanmanhua.com/sou/谷歌留痕教程【tg:seogoogle987】,7kE
- https://www.hanbat.ac.kr/search/front/Search.jsp?qt=谷歌留痕教程【tg:seogoogle987】RFM
- https://www.rhymezone.com/r/rhyme.cgi?typeofrhyme=oldrel&loc=nojs&Word=谷歌留痕教程【tg:seogoogle987】,6sv
- https://www.welshmountainzoo.org/shop/index.php?routeproduct/search&tag=谷歌留痕教程【tg:seogoogle987】,7gK
- https://www.thedp.com/page/search?q=谷歌留痕教程【tg:seogoogle987】,KKo
- https://www.wmfe.org/?s=谷歌留痕教程【tg:seogoogle987】,uYN

谷歌反垄断案进展:如何保护机密信息成为关注点
云安全日报220419:IBM企业B2B平台发现执行任意代码漏洞,需要尽快升级
标签: 小米 澎湃OS MiMo大模型 CarIoT
阿里云:坚持伙伴优先 对伙伴收入占比提出明确数字要求
标签: OpenAI Neptune 模型监控 AI工具
