一、问题背景
(1) 内网服务器与互联网物理隔离
(2) 华为昇腾服务器、麒麟sp2操作系统、aarch64、Linux环境、Docker 26.0.0
(3) 自己可以连网的笔记本属于AMD架构,拉取的镜像没有办法直接移植。
二、解决方案:
1、拉取对应arm64架构的镜像文件并导入内网服务器
(1)拉取arm64架构对应的镜像
#拉取对应arm64架构版本的镜像
docker pull –platform linux/arm64 <image name>
(2)确认镜像文件架构
docker inspect <imageID> | grep Architecture
确认好该image是arm64架构
(3)打包指定镜像到指定文件夹
docker save <image_name>:<tag> -o <path>
(4)内网服务器加载镜像文件
docker load -i XX.tar
一般至此都不会有任何bug。
2、开始卡bug并解决
(1)docker-compose up -d 之后,显示container无法正常创建,报错信息为
Error response from daemon:
failed to create task for container:
failed to create shim task:
OCI runtime create failed:
container_linux.go:328:
starting container process caused “permission denied” : unknown
这里一开始各种怀疑权限问题,各种检查不是权限问题。最后发现竟然是因为麒麟系统自带的podman和docker冲突导致的,卸载podman之后就OK了。
(2)解决完上述问题后,访问localhost,显示502 bad gateway的错误
一开始一直以为是Nginx服务的问题,就按照Dify官方给的解决方案各种操作发现根本没有用。
后来发现是Nginx服务依赖的API服务不正常,docker logs dify-api-1查看报错信息为
[FATAL:partition_root.cc(863)] Check failed: (internal::SystemPageSize() == (size_t{1} << 12)) || (internal::SystemPageSize() == (size_t{1} << 14)).
Running migrations
None of PyTorch, TensorFlow >= 2.0, or Flax have been found. Models won't be available and only tokenizers, configuration and file/data utilities can be used.
Preparing database migration…
这个时候直接问ChatGPT这是什么bug,怎么解决真的很容易被带沟里,都是血泪!!!
真的很难想象这个错误竟然如此隐蔽,在翻阅了半天dify的issue之后终于发现了有人和我遇到了同样的问题。此处贴上发现的解决方案:
原来是因为我最开始拉取的dify项目是0.11.2的,有这个问题,就按里面的方式,把pypdfium2下载下来后重新build那个api的镜像就可以解决了。
其实dify新版本里已经把这个bug解决掉了,后来升级到了0.14.1,重新拉取对应arm64架构的镜像文件并导入内网服务器就成功解决了。
说明dify这个开源项目还是有很多问题的,要及时更新最新版本。
评论前必须登录!
注册