Dify部署踩坑指南(Windows+Mac)
组件说明
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 service
api:
image: langgenius/dify-api:0.14.2
web:
image: langgenius/dify-web:0.14.2
restart: always
# worker service
# The Celery worker for processing the queue.
worker:
image: langgenius/dify-api:0.14.2
restart: 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 服务端口