问题描述截图:

在服务器上部署ragflow后,尝试添加ollama模型,输入url后却显示failed to connect to ollama.

背景描述:

ollama是部署在服务器的主机上了,未通过docker容器部署。而ragflow则是通过docker容器进行部署的。(此处加深自己对docker容器的理解,docker容器实际上可以看作一个“被隔离的进程组”,它在用户体验上非常像一台独立主机,但本质上仍然是共享主机内核的进程集合,而不是真正独立的操作系统实例。)

问题在于,Ollama 默认只绑定到 127.0.0.1(本地回环接口),容器无法从 Docker 网络访问(即使解析对了,也会拒绝连接)。

查看ollama监听的所有地址,发现其实只监听了自己:只有主机上的进程可以访问,其他从 Docker 容器、从局域网其他电脑、甚至从主机上的其他网络接口都连不上

所以

另外,ragflow官网教程上部署ollama连接中使用到了,host.docker.internal ,但这个域名在原生 Linux Docker 中默认不工作(它主要是 Mac/Windows Docker Desktop 的特性)。

解决方法:

明确了问题,最直接简单的解决方法则是让ollama绑定到所有接口(0.0.0.0)

export OLLAMA_HOST=0.0.0.0:11434   # 让它监听所有 IP
ollama serve                      # 前台运行,或者后台 & 
xxx:~$ ss -tunlp | grep 11434
tcp   LISTEN 0      4096               *:11434            *:*    

之后可以看到监听接口已经有所变化。

之后再进入ragflow容器内部,在容器内部找到主机的网关 IP

docker exec -it ragflow-server bash
ip route | grep default

输出类似:

default via 172.17.0.1 dev eth0 ...

之后再返回ragflow页面设置ollama base url即可。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐