組件說明
Dify踩坑及解決方案
?? 除了修改鏡像版本,nginx端口不要直接修改docker-compose.yaml !!!!!!!
1、更換鏡像版本
這個文件是由.env自動生成的,在.env配置
拉取dify-main后,默認的鏡像版本是1.0.0,我將鏡像版本修改為0.14.2是可以正常用的
(開始在Mac中拉取的就是1.0.0的鏡像版本,在添加模型供應商時提示組件缺失,需要再次手動下載各個模型供應商組件,0.14.2版本不存在這個問題)
修改方式:在yaml中搜索1.0.0,將所有的版本號替換為0.14.2
services:# API serviceapi:image: langgenius/dify-api:0.14.2
web:image: langgenius/dify-web:0.14.2restart: always
# worker service# The Celery worker for processing the queue.worker:image: langgenius/dify-api:0.14.2restart: always
2、ollama接入dify報錯(容器網絡隔離)
Docker內部容器地址默認為127.0.0.1和localhost,非宿主機,需要將 Ollama 服務暴露給網絡才可以正常接入
解決:使用host.docker.internal
Windows
Ollama的默認監聽地址為127.0.0.1,導致其他容器無法訪問,啟動Ollama時指定監聽所有網絡接口0.0.0.0
首先,在系統環境變量中添加OLLAMA_HOST,值為0.0.0.0,并啟動ollama
ollama serve
如果提示端口被占用,在任務管理器中關閉所有運行的ollama服務
然后,在宿主機上驗證Ollama是否運行正常
curl http://localhost:11434
接著,配置防火墻確保允許外部設備訪問Ollama所使用的端口
Mac
1、設置Ollama環境變量
launchctl setenv OLLAMA_HOST "0.0.0.0"
如果是手動啟動 Ollama,可以使用以下命令(臨時)
ollama serve --host 0.0.0.0
在 Dify 配置中使用 host.docker.internal
2、從 Dify 容器中測試連接
curl http://host.docker.internal:11434
3、將 Ollama 的地址設置為
http://host.docker.internal:11434
Linux
在[Service]下加上Environment=“OLLAMA_HOST=0.0.0.0”
具體修改方法在這里
3、啟動
在dify所在地址欄輸入cmd,進入終端,拉取鏡像,復制環境變量,采用默認端口啟動
cd dify/docker
cp .env.example .env
docker compose up -d
如果修改了配置,需要重啟docker,命令如下:
docker compose down
docker compose up -d
如果在拉取鏡像中報錯
Error response from daemon: Get “https://registry-1.docker.io/v2/”: EOF
請docker鏡像源換為國內鏡像源
Mac&Windows在Docker桌面中修改
點擊頂部齒輪,進入Docker Engine
#鏡像源如下
{"registry-mirrors": ["https://docker.1panel.live","https://docker.nju.edu.cn","https://docker.m.daocloud.io","https://dockerproxy.com","https://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com","https://registry.cn-hangzhou.aliyuncs.com"]
}
Linux請修改daemon.json文件
vim /etc/docker/daemon.json
保存退出:esc–>:wq–>Enter
4、接入模型供應商時模型的url
模型供應商” > “ollama” > “添加”。
將 URL 設置為 http://host.docker.internal:11434,讓 Docker 通過內部地址訪問
Ollama的端口號默認為11434
端口沖突
1、Ollama端口被占用
如果之前部署過其他應用,用Ollama鏈接過其他應用,可能會遇到端口沖突的問題
方法1:關閉其他占用Ollama的進程
Windows
netstat -ano | findstr :11434
Mac/Linux
sudo lsof -i :11434
運行以下命令終止進程
Windows
taskkill /PID <PID> /F
Mac/Linux
kill -9 <PID>
方法2,修改Ollama默認端口號
2、dify默認端口被占用
dify的默認web端口號80
在docker中的.env文件中修改web端口號
修改如下:
EXPOSE_NGINX_PORT=8080 # 修改 Web 訪問端口 (改這個)
EXPOSE_NGINX_SSL_PORT=8443 # 修改 SSL 端口
DIFY_PORT=5002 # 修改 API 服務端口