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

cpp 复制代码
services:
  # API service
  api:
    image: langgenius/dify-api:0.14.2 
cpp 复制代码
 web:
    image: langgenius/dify-web:0.14.2
    restart: always
cpp 复制代码
 # 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

cpp 复制代码
ollama serve

如果提示端口被占用,在任务管理器中关闭所有运行的ollama服务

然后,在宿主机上验证Ollama是否运行正常

cpp 复制代码
curl http://localhost:11434

接着 ,配置防火墙确保允许外部设备访问Ollama所使用的端口

Mac

1、设置Ollama环境变量

cpp 复制代码
launchctl setenv OLLAMA_HOST "0.0.0.0"

如果是手动启动 Ollama,可以使用以下命令(临时)

cpp 复制代码
ollama serve --host 0.0.0.0

在 Dify 配置中使用 host.docker.internal

2、从 Dify 容器中测试连接

cpp 复制代码
curl http://host.docker.internal:11434

3、将 Ollama 的地址设置为

cpp 复制代码
http://host.docker.internal:11434

Linux

在Service下加上Environment="OLLAMA_HOST=0.0.0.0"
具体修改方法在这里

3、启动

在dify所在地址栏输入cmd,进入终端,拉取镜像,复制环境变量,采用默认端口启动

cpp 复制代码
cd dify/docker
cp .env.example .env
docker compose up -d

如果修改了配置,需要重启docker,命令如下:

cpp 复制代码
docker compose down
docker compose up -d

如果在拉取镜像中报错

cpp 复制代码
Error response from daemon: Get "https://registry-1.docker.io/v2/": EOF

请docker镜像源换为国内镜像源

Mac&Windows在Docker桌面中修改

点击顶部齿轮,进入Docker Engine

#镜像源如下

cpp 复制代码
{
  "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

cpp 复制代码
netstat -ano | findstr :11434

Mac/Linux

cpp 复制代码
sudo lsof -i :11434

运行以下命令终止进程

Windows

cpp 复制代码
taskkill /PID <PID> /F

Mac/Linux

cpp 复制代码
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 服务端口

相关推荐
Blockbuater_drug3 天前
Dify 1.18 本地部署实战:Windows + WSL2 + Docker,从零跑到本地可用
windows·docker·容器·dify·大模型应用平台
一木 之林4 天前
Dify学习笔记 03 · RAG检索增强生成:三代范式、评估与落地(第40-45、55-56集)
笔记·小程序·交互·dify
噜哥带你玩转 AI 大模型4 天前
从 “if-else“ 到 Agent:Dify 进阶实战,让 AI 自己判断、自己调工具
agent·工作流·dify·多轮对话·httpapi
一木 之林5 天前
Dify学习笔记 04 · 检索底座:Embedding、Rerank与向量数据库(第46-54集)
笔记·学习·embedding·dify
毒爪的小新5 天前
最新 Dify 1.14.0+ 内网离线插件打包、部署完整踩坑方案(解决 uv.lock 依赖校验失败)
运维·ai·uv·dify
死磕音视频8 天前
Dify 入门:用 Docker 自部署并搭建知识库问答助手
docker·知识库·dify·大模型应用
情 九9 天前
Dify 任务提交幂等实战:避免重复点击与网络重试创建重复任务
dify
一级新生10 天前
提示词工程:跟 AI 打交道的手艺
人工智能·大模型·dify·1024程序员节·提示词工程
情 九11 天前
Dify SSE 流式调用实战:执行进度、运行 ID 与断线核实
dify
一级新生12 天前
Dify 接入大模型:本地还是云端?实战与选型
人工智能·大模型·dify·ollama