Dify Docker部署与使用全指南
在生成式AI迅速渗透各行各业的今天,越来越多企业希望快速构建专属的智能应用——无论是自动回复客户咨询的客服机器人,还是能批量生成营销文案的内容引擎。但直接基于大模型从零开发,往往面临工程复杂、迭代缓慢、维护成本高等问题。
有没有一种方式,能让开发者跳过后端架构设计,通过可视化操作就能完成AI应用的搭建?Dify正是为此而生。
它是一个开源的LLM应用开发平台,融合了 LLMOps 实践与低代码理念,提供从提示词调试、知识库管理到Agent逻辑编排的一站式能力。更重要的是,它支持通过Docker Compose 一键部署,极大降低了本地运行和测试门槛。
快速部署:用 Docker 启动你的第一个 Dify 环境
最推荐的方式是使用官方提供的docker-compose.yml文件进行容器化部署。整个过程只需三步:拉取代码、配置环境、启动服务。
首先克隆项目仓库:
git clone https://github.com/langgenius/dify.git cd dify/docker接着复制示例配置文件并根据需要修改参数:
cp .env.example .env关键配置项包括:
| 参数 | 说明 |
|---|---|
EXPOSE_NGINX_PORT=80 | 外部访问端口,默认为 80 |
MYSQL_ROOT_PASSWORD=your_password | MySQL 数据库 root 密码 |
REDIS_PASSWORD=your_redis_pass | Redis 访问密码 |
HOST=dify.ai | 主机域名(若启用 HTTPS 或反向代理时需设置) |
⚠️ 如果你本机的 80 端口已被占用(比如有其他 Nginx 服务),建议提前改为
8080或其他可用端口。
最后执行启动命令:
docker compose up -d该命令会启动以下核心组件:
dify-web:前端界面(React)dify-api:后端服务(FastAPI)dify-worker:异步任务处理(Celery + Redis)nginx:反向代理网关mysql:元数据存储redis:缓存与消息队列
等待约 1~3 分钟,所有容器状态变为running后,在浏览器中打开:
👉 http://127.0.0.1
如果是首次访问,系统将引导你注册一个管理员账户,登录后即可进入控制台开始构建应用。
部署常见问题及实战解决方案
尽管 Docker 部署已经非常便捷,但在实际操作中仍可能遇到一些典型问题。以下是几个高频故障及其应对策略。
❌ 无法访问页面?提示“Connection Refused”
这通常是因为目标端口被占用。例如,macOS 自带的 AirPlay 接收器默认占用了 5000 和 7000 端口,某些 Linux 发行版也可能预装了 Apache/Nginx。
解决方法很简单:修改.env中的EXPOSE_NGINX_PORT为未被占用的端口,如8080:
EXPOSE_NGINX_PORT=8080然后重启服务:
docker compose down && docker compose up -d再访问 http://127.0.0.1:8080 即可。
❌ 出现 502 Bad Gateway 错误?
这个错误意味着 Nginx 成功启动了,但无法将请求正确转发给后端的web或api服务。最常见的原因是容器 IP 地址变化导致代理配置失效。
第一步:检查容器实际 IP
Docker 在每次重建容器时可能会分配新的内网 IP。我们可以通过以下命令查看当前 IP:
docker inspect dify-web-1 | grep IPAddress docker inspect dify-api-1 | grep IPAddress输出类似:
"IPAddress": "172.19.0.5" "IPAddress": "172.19.0.6"第二步:更新 Nginx 配置
编辑./nginx/conf.d/default.conf.template文件,确保proxy_pass指向正确的地址:
location / { proxy_pass http://172.19.0.5:3000; # web 服务 include proxy.conf; } location /api { proxy_pass http://172.19.0.6:5001; # api 服务 include proxy.conf; }第三步:重启 Nginx
docker restart dify-nginx-1刷新页面后应恢复正常。
💡小技巧:为了避免每次 IP 变更都要手动改配置,可以在docker-compose.yml中为服务指定静态 IP 或使用服务名作为主机名(如http://dify-web:3000),前提是 Nginx 运行在同一 Docker 网络中。
❌ API 容器反复重启?数据库迁移失败?
当你从旧版本升级或清空 volume 后重新启动时,偶尔会出现Migration failed或Table already exists的报错。
这类问题多源于数据库结构变更未顺利完成。
排查步骤如下:
- 查看具体错误日志:
docker logs dify-api-1- 若确认是 schema 冲突,且处于测试环境,可以安全清除数据卷后重试:
docker compose down -v docker compose up -d⚠️ 注意:
-v会删除所有持久化数据(包括用户、应用、知识库等),仅限开发/测试环境使用。生产环境应参考 Dify 升级指南 手动执行迁移脚本。
如何接入自己的大模型?支持哪些服务商?
Dify 的一大优势在于其强大的模型兼容性。你不仅可以用 OpenAI、Anthropic 等公有云模型,还能无缝对接本地部署的私有模型。
在【控制台 → 设置 → 模型供应商】中,你可以添加以下类型的模型服务:
- 🔹 公有云模型:OpenAI、Anthropic、Google Gemini、Azure OpenAI
- 🔹 私有部署模型:Ollama、Xinference、vLLM、TGI
- 🔹 自定义 API 接口:只要符合 OpenAI 格式的第三方接口均可接入
示例:接入本地 Ollama 模型
假设你已经在宿主机上运行了 Ollama,并加载了llama3模型。
- 启动 Ollama 服务:
ollama serve- 下载模型:
ollama pull llama3- 在 Dify 控制台添加模型提供商:
- 类型选择:Ollama
- API Base URL:http://host.docker.internal:11434(Docker 内访问宿主机的特殊域名)
- 填写模型名称:llama3
保存后,该模型就会出现在应用创建时的下拉列表中。
💡 提示:如果你在 Linux 上部署,
host.docker.internal不可用。此时应替换为宿主机的局域网 IP(如192.168.1.x),或在docker-compose.yml中显式添加网络别名。
核心功能实战:从零构建一个 RAG 应用
让我们通过一个真实场景来体验 Dify 的核心能力——如何快速搭建一个基于企业文档的知识问答机器人。
第一步:构建知识库(Knowledge Base)
进入【知识库】模块,点击“新建知识库”。
上传公司内部的 PDF 手册、Word 文档或 TXT 文件。Dify 支持自动解析内容并进行分段处理。
你可以自定义切片策略:
- 按段落分割(适合技术文档)
- 固定长度切片(如每 512 token 一段)
- 启用重叠(overlap)以保留上下文连贯性
然后选择 Embedding 模型,例如:
- 中文推荐:
BGE-small-zh - 英文推荐:
text-embedding-ada-002
提交后,系统会自动完成向量化并建立索引。
完成后,任何应用都可以启用“检索增强生成”(RAG)功能,在回答用户问题时自动匹配最相关的文档片段作为上下文输入。
第二步:编写 Prompt 并调试
Dify 提供了图形化的 Prompt 编辑器,支持变量注入、条件判断和上下文引用。
举个例子,我们可以写一个智能客服回复模板:
你是一个专业的客服助手,请根据以下信息回答客户问题。 【历史对话】 {{#sys.query_history}} 用户:{{question}} 客服:{{answer}} {{/sys.query_history}} 【当前问题】 {{query}} 【知识库结果】 {{#context}} {{content}} {{/context}} 请用中文礼貌作答,不超过150字。其中:
-{{query}}是用户的输入
-{{#sys.query_history}}自动注入最近几轮对话
-{{#context}}是 RAG 返回的相关文档片段
右侧还提供实时预览功能,输入测试问题即可看到模型输出效果,大大提升了调试效率。
第三步:发布为 API 或嵌入网页
完成调试后,点击“发布”按钮,你的应用就可以对外服务了。
支持多种发布形式:
- 🌐 生成嵌入代码(iframe 或 JS SDK),可直接插入官网、帮助中心
- 🔄 开放 RESTful API 接口,供 CRM、ERP 等系统调用
- 🔐 支持 API Key 鉴权、调用频率限制、访问日志监控
这意味着你可以轻松将 AI 能力集成进现有业务流程中。
支持的模型供应商一览
Dify 对主流模型平台提供了原生支持,无需手动封装接口即可直接使用。
| 供应商 | 支持功能 | 备注 |
|---|---|---|
| OpenAI | ✅ Function Calling (🛠️),✅ 视觉(👓) | 支持 gpt-3.5-turbo, gpt-4, gpt-4o |
| Anthropic | ✅ Function Calling (🛠️) | 支持 claude-3 系列 |
| Google Gemini | ✅ Function Calling (🛠️),✅ 视觉(👓) | 支持 gemini-pro |
| Azure OpenAI | ✅ Function Calling (🛠️) | 需配置 endpoint 与 key |
| Ollama | ✅ 本地模型加载 | 支持 llama3、mistral、qwen 等 |
| Xinference | ✅ 分布式推理 | 支持 GGUF 量化模型 |
| HuggingFace | ✅ 自托管推理 | 需提供 Inference API Endpoint |
| vLLM | ✅ 高性能推理 | 支持 Tensor Parallelism |
✅ 表示已通过官方测试并提供 UI 配置入口
这种广泛的兼容性使得 Dify 成为企业级 AI 应用的理想中间层——既能对接云端最强模型,也能发挥本地算力潜力。
工作流详解:Chatflow vs Workflow
Dify 将复杂 AI 应用抽象为两种工作流模式,分别适用于不同场景。
Chatflow:对话式交互的利器
专为聊天机器人、虚拟助手等需要持续对话的场景设计。
它的特点是:
- 支持记忆机制(Memory),能记住用户偏好和历史行为
- 内置意图识别节点,可对问题分类(如售前/售后)
- 提供Answer 节点控制最终输出格式
- 支持人工审核节点,敏感内容先由人确认再返回
常见节点类型包括:
| 节点 | 功能 |
|---|---|
| LLM Node | 调用大模型生成内容 |
| Knowledge Retrieve | 从知识库中检索相关信息 |
| Question Classify | 判断用户问题类别 |
| If/Else | 条件分支控制 |
| HTTP Request | 调用外部 API 获取数据 |
📌案例:用户问“我的订单还没收到”,系统先通过分类节点识别为“售后问题”,再调用订单查询 API 获取物流状态,最后结合知识库中的退换货政策生成安抚话术。
Workflow:自动化任务流水线
更适合非实时、批处理类任务,比如日报生成、邮件通知、翻译流水线等。
特点包括:
- 支持定时触发(Cron 表达式)
- 支持事件驱动(如 webhook 触发)
- 提供代码节点(Python Script),可自定义复杂逻辑
- 支持循环迭代(Loop)处理多个对象
典型应用场景:
- 自动生成周报:提取数据库数据 → 调用 LLM 分析趋势 → 输出 Markdown 报告 → 发送邮件
- 多语言翻译流水线:原文输入 → 调用翻译模型 → 多轮校对 → 导出 Excel
相比传统脚本,Workflow 提供了可视化编排、失败重试、执行日志追踪等企业级能力,显著提升了运维可靠性。
真实案例:他们是如何用 Dify 解决实际问题的?
案例一:电商平台智能客服
痛点:每天数千条重复咨询(如“什么时候发货?”、“怎么退款?”),人工客服压力巨大。
解决方案:
- 使用 Dify 构建 Chatflow
- 接入商品信息、订单规则、退换货政策等知识库
- 设置意图识别节点,区分“物流查询”、“退款申请”等类别
- 对高风险问题(如投诉)自动转接人工
✅成果:响应速度 < 1 秒,覆盖 70% 常见咨询,节省人力成本 40%
案例二:营销团队内容工厂
痛点:社交媒体运营需大量原创文案,创作效率低。
解决方案:
- 创建 Workflow 工作流
- 输入关键词列表(如“夏季防晒”、“户外旅行”)
- 调用 LLM 自动生成标题、正文、标签
- 经过审核节点后导出为 CSV
✅成果:单次生成 100 条高质量文案,耗时仅 5 分钟
案例三:企业内部知识助手
痛点:新员工培训资料分散在多个系统,查找困难。
解决方案:
- 上传公司制度、SOP、组织架构图等文档至知识库
- 配置 BGE-small-zh 作为中文 Embedding 模型
- 构建专属问答机器人,嵌入企业微信
✅成果:新人入职学习周期缩短 30%,搜索准确率达 90%+
案例四:自动化销售简报系统
痛点:管理层每天需手动整理销售数据并撰写分析报告。
解决方案:
- 设置定时 Workflow(每日上午 9:00 执行)
- 连接 MySQL 数据源获取昨日销售额
- 调用 GPT-4 分析增长趋势与异常点
- 生成图文摘要并通过邮件发送
✅成果:完全自动化,管理层准时收到专业级分析报告
写在最后
Dify 不只是一个工具,更是一种新的 AI 应用开发范式。它把原本需要数周开发周期的任务,压缩到几分钟内完成。通过 Docker 一键部署,配合可视化的 Prompt 编排、RAG 支持和 Agent 行为建模,几乎可以零代码实现各类生成式 AI 商业应用。
更重要的是,它是开源的。这意味着你可以自由定制、私有化部署、深度集成进现有系统,而不受厂商锁定的限制。
无论你是想打造一个智能客服、自动化内容工厂,还是构建企业的“私有知识大脑”,Dify 都为你提供了坚实的基础设施和灵活的扩展能力。
🚀 是时候动手试试了!
🔗 官方文档:https://docs.dify.ai
🐙 GitHub 仓库:https://github.com/langgenius/dify
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考