Kalzn
文章23
标签13
分类7
RAGFlow Docker镜像交叉构建相关问题

RAGFlow Docker镜像交叉构建相关问题

背景

本人负责的RAGFlow部署时遇到的问题,情况是需要在一个完全断网的内部机上部署RAGFlow,内部机为国产信创环境,操作系统为麒麟,ARM64框架,由于RAGFlow没有提供ARM平台的镜像,所以需要自行构建,然而ARM内部机完全断网,RawFlow的构建过程需要联网。所以最终还是需要在本地可以联网的x86机器上交叉构建,然后上传到ARM内部机中。

构建过程及问题

官方有完整全面的构建文档,但是没有提及交叉构建的相关说明。

按照官方文档操作,首先构建依赖镜像,随后构建RAGFlow镜像,构建时采用buildx进行交叉构建完整版镜像。

1
docker buildx build --platform linux/arm64 --no-cache  -f Dockerfile -t infiniflow/ragflow:nightly .
然而在构建RAGFlow镜像时,Dockerfile执行apt install时出现段错误Segmentation fault,退出码255,没有其他任何错误日志输出。错误发生在apt下载完成后的解包过程中,与具体安装的包无关,install任何包都会出现255错误。

出现这种情况的问题是未启用QEMU模拟器支持ARM架构。在 x86 上构建 ARM 架构的镜像,必须使用 QEMU 来模拟 ARM 环境,否则执行二进制时会崩溃。这些需要在buildx之前先执行

1
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
随后问题解决,在随后构建过程中出现了构建进程崩溃的情况,具体原因时内存不足,可以不使用--no-cache参数,在崩溃后在崩溃点继续开始构建。

在构建结束后,通过save命令保存镜像。

1
docker save -o ./ragflow_arm.tar infiniflow/ragflow:nightly

随后将tar包上传至服务器,然后加载到docker环境中即可。

本文作者:Kalzn
本文链接:http://kalzncc.github.io/2025/04/25/RAGFlow%E4%BA%A4%E5%8F%89%E7%BC%96%E8%AF%91%E7%9B%B8%E5%85%B3%E9%97%AE%E9%A2%98/
版权声明:除文章中特别注明外,本站所有文章采用 CC BY 3.0 CN 协议进行许可
即在署明文章作者及来源的情况下,您可以将本文用于包括商业目在内的任何用途。
除此之外,本文不做正确性担保,本人不对产生的问题负责。
×