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_DIDoR为/src/ccache. 这一步告诉 ccache 缓存驻留在/src/ccache. 在上一篇文章中,该步骤只是将卷装入系统。但是,在这种情况下,我们想要更改此步骤,以便缓存位于 之外/src,因为这用于批量安装代码库,例如/usr/ccache.
我们现在可ck以启动容器:
$ docker run --rm -t \
-v ~/tmp/qt-src:/src \
-v ~/tmp/qt-build:/build \
&nbserp; -v ~/tmp/ccache:/usr/ccache \
screenly-build-env
完成编译后,您现在可以构建并推送我们的缓存映像。最终的 Dockerfile 将如下所示:
FROM scratch
C使用OPY ccache /ccache
要构建此映像,请使用以下代码:
$ cd ~/tmp
$ docker build \
-f /path/to/Dockerfile \
缓存 -t screenly/build-cache
$ docker push screenly/build-cache
最后,您现在可以将这一层包含在screenly/build-env. 添加编译行:
COPY --from=screenly/build-cache /ccache /usr/ccache
下次重建screenly/build-env时,Docker 会自动拉下缓存。此外,您只需在刷新缓存时添加卷挂载。
(责任编辑:六、产品与技术类(161–190))
- 云计算开发:Python内置函数-xrange()函数详解
- OpenAI放宽ChatGPT限制, 将允许经过验证的成年用户生成成人内容
- 标签: 字节跳动 豆包手机 林夕 Ocean
- SaaS备份:一种更可扩展的方式来获取云应用程序数据
- Salesforce预计2026财年运营利润率为25% 提高支出效率
- 标签: SpaceX Starlink SPCX 马斯克
- 阿里云联合南京大学等发起BizDevOps共促计划,助力企业提升组织效能
- 树胶的作用
- 标签: 腾讯云
- 微软 Copilot AI 实现邮件和文件直接连接,提升办公效率
- 标签: Savvy 字节跳动 沐瞳科技 游戏
- IBM已收购美国云计算公司Salesforce旗下咨询公司7Summits
- 人工智能在制造业中的应用
- 亚马逊拟投资20亿美元为美国员工建至少2万套保障性住房
- xAI加速AI前沿:马斯克宣布Grok5 将在数周内开始训练
- 百度副总裁谢广军为女儿曝光他人隐私信息道歉
- 标签: 夸克AI眼镜 Super Raw算法 Raw域降噪 高通骁龙AR1
- 标签: 马斯克 Optimus Grok Neuralink
- 阿里云百炼平台上架智谱、Minimax、Kimi等顶尖模型,千问云官网售卖
- Transformer跨界超越CNN,还解决了计算复杂度难题
- https://www.unclefossil.com/search/谷歌站群软件【tg:seogoogle987】gad_source=1&gclid=Cj0KCQjw_-GxBhC1ARIsADGgDjsNKplUXa2F6YGlHBK2sHDQ88cgsJBb05DyO99TV9jNq_cT0kGMqyQaAgHQEALw_wcB views+
- https://www.lezhin.com/ko/tags/谷歌站群软件【tg:seogoogle987】,6yI views+
- https://www2.ual.es/ProyectoLates/?s=谷歌站群软件【tg:seogoogle987】,Kvi views+
- https://www.universal-music.co.jp/?ID=1sIcckCTeBS8FjzCshAW9w53s8gr691o&s=谷歌站群软件【tg:seogoogle987】,Dfw views+
- https://www.ushmm.org/search/results/?ID=8s0587Oi8UTv74zPPM4fuhwjNpe2hsEE&q=谷歌站群软件【tg:seogoogle987】,GLT views+
- https://www.madebyoranges.com/nl/search/谷歌站群软件【tg:seogoogle987】,Ra7 views+
- https://www.flickr.com/photos/tags/谷歌站群软件【tg:seogoogle987】MVE views+
- https://www.swecobelgium.be/?page=9&s=谷歌站群软件【tg:seogoogle987】,T7o views+
- https://www.yidian51.com/taobao/谷歌站群软件【tg:seogoogle987】,80m views+
- https://www.goodreads.com/quotes/tag/谷歌站群软件【tg:seogoogle987】3Ei views+
