通过 Docker 部署 Dify 并集成知识库,能够快速构建一个基于私有数据的安全、精准、开箱即用的智能问答系统,有效解决通用大模型在专业场景下的"幻觉"问题。同时,Dify 原生支持灵活的知识库权限体系,可实现"管理员统一维护公共知识库、用户独立管理私有知识库"的多租户隔离场景,检索时根据用户身份自动路由至对应的公共库与私有库进行混合查询,确保数据安全与检索精准度的统一。该系统适用于企业客服、内部知识库管理、多部门协作等多样化场景,且所有数据均由你自主掌控,兼顾灵活性与安全性。
本文将从零开始,详细介绍在 Windows 环境下使用 Docker 部署 Dify,并基于知识库搭建智能问答系统的完整流程。
一、为什么选择 Docker 部署?
Docker 部署是 Dify 官方推荐的部署方式,相比源码部署,Docker 方式具有以下优势:
-
开箱即用:所有依赖(数据库、缓存、向量数据库)都打包在容器中,无需手动配置
-
环境隔离:不会污染 Windows 系统环境,卸载干净彻底
-
一键升级:拉取新镜像即可完成版本更新
-
资源管理:通过 Docker Desktop 可视化监控和管理所有服务
二、环境准备
2.1 硬件与系统要求
组件最低配置推荐配置CPU2核4核+内存4GB8GB+磁盘10GB20GB+操作系统Windows 10/11 64位 专业版Windows 11 64位
Windows 10/11 专业版或企业版是最佳选择,家庭版需确认支持 WSL2。
2.2 安装 Docker Desktop
-
下载:访问 Docker 官网(https://www.docker.com/products/docker-desktop/)下载 Docker Desktop for Windows
-
安装:双击运行安装程序,务必勾选 "Use WSL 2 instead of Hyper-V"
-
重启:安装完成后按提示重启电脑
-
启动:从开始菜单启动 Docker Desktop,等待右下角鲸鱼图标变为静止状态
-
验证:打开命令行,运行 docker --version 确认安装成功
2.3 配置镜像加速器(国内用户强烈推荐)
由于网络原因,拉取 Docker 镜像可能较慢。配置镜像加速器可显著提升下载速度。
-
右键点击右下角 Docker 鲸鱼图标 → Settings
-
左侧菜单点击 Docker Engine
-
将 JSON 配置修改为:
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
]
}
-
点击 Apply & Restart 使配置生效
-
验证配置:docker info | findstr "Registry Mirrors"
三、Docker 部署 Dify
3.1 获取 Dify 代码
克隆代码仓库
git clone https://github.com/langgenius/dify.git
cd dify
建议使用稳定版本(可选)
git checkout v1.14.2
3.2 进入 Docker 目录并配置环境
cd docker
复制环境变量模板
copy .env.example .env
.env 文件中的默认配置已适用于大多数场景,无需修改即可启动。如需调整端口或数据库密码,可用文本编辑器打开 .env 文件进行修改。
3.3 一键启动所有服务
docker compose up -d
首次启动会拉取所有依赖镜像(包括 PostgreSQL、Redis、Weaviate、Nginx 等),需要几分钟时间。之后启动只需几秒钟。
3.4 验证服务状态
查看所有容器运行状态
docker compose ps
所有容器状态应为 Up(运行中),其中 docker-api-1 显示 health: starting 是正常现象,等待约 30 秒后会变为 healthy。
3.5 访问 Dify
在浏览器打开 http://localhost(如果 80 端口未被占用)或 http://localhost:8080(取决于你的端口映射配置),即可看到 Dify 的登录/注册页面。
常见端口问题:如果 docker compose ps 显示 Nginx 端口映射为 0.0.0.0:80->80/tcp,则直接访问 http://localhost。如需使用 8080 端口,可在 docker-compose.yml 中将 ports 改为 "8080:80",然后重启。
3.6 Docker 服务管理常用命令
操作命令说明启动所有服务docker compose start启动已停止的容器停止所有服务docker compose stop停止容器,数据保留重启所有服务docker compose restart相当于 stop + start停止并删除容器docker compose down数据卷保留,数据不丢失完全清理docker compose down -v警告:会删除所有数据查看日志docker compose logs查看所有容器日志查看某容器日志docker compose logs web只查看 Web 容器日志
日常关机重启后,只需运行 docker compose start 即可恢复所有服务,无需重新 up -d。
四、构建知识库问答系统
4.1 注册与登录
访问 http://localhost,首次打开会进入注册页面。填写邮箱、用户名和密码完成注册,然后登录 Dify 工作台。
4.2 配置模型供应商
在使用知识库前,需要先配置大语言模型和 Embedding 模型:
-
点击右上角头像 → 设置 → 模型供应商
-
选择你要使用的模型平台(如 OpenAI、智谱 AI、通义千问、Azure OpenAI 等),我是用的的deepseek的模型,用量比较省
-
填入 API Key 并保存
-
同样需要配置 Embedding 模型,用于知识库向量化检索
注意:如果没有配置 Embedding 模型,知识库将无法创建。
4.3 创建知识库
-
顶部导航栏点击「知识库」
-
点击「创建知识库」按钮
-
输入知识库名称(如"产品手册"或"公司制度")

4.4 上传文档
在创建知识库的向导中,选择数据源:
-
本地文件:上传 PDF、DOCX、TXT、Markdown 等格式的文档
-
同步 Notion:授权后同步 Notion 页面
-
同步 Web 站点:输入网址,爬取网页内容
4.5 配置文本分段与清洗
这是决定检索质量的关键步骤,直接影响最终问答效果。
分段模式:
模式工作原理适用场景通用分段按固定长度切分文本块大多数通用文档Q&A 分段AI 自动提取问答对FAQ、客服知识库父子分段用子块检索,返回父块上下文长文档、技术手册
核心参数建议:
文档类型分段最大长度分段重叠长度FAQ 问答200-400 字符30 字符技术文档500-800 字符80 字符产品手册400-600 字符50 字符法律合同800-1000 字符100 字符
索引方式:
-
高质量:使用 Embedding 模型生成向量索引,支持语义检索,消耗 Token
-
经济:使用关键词倒排索引,不消耗 Token,准确率较低
4.6 创建应用并关联知识库
-
顶部导航栏点击「工作室」→「创建空白应用」
-
选择应用类型(推荐「聊天助手」或「工作流」),输入名称
-
在应用编排页面,找到「上下文」设置
-
点击「添加」,选择你创建的知识库
-
配置检索参数:
-
检索方式:选择「混合检索」(推荐,结合语义和关键词)
-
TopK:返回的文本片段数量,建议 3-5
-
Score 阈值:相关性过滤门槛,建议 0.5-0.7

4.7 测试与发布
在应用右侧的「调试与预览」面板中输入问题,测试知识库检索和模型回答效果。如果检索结果不理想,可以回到知识库的「召回测试」页面调整分段参数。
测试满意后,点击右上角「发布」,应用即生成可分享的链接或 API 端点。
五、总结
Docker 部署 Dify 的核心流程:
安装Docker Desktop → 配置镜像加速 → git clone 获取代码 → cd docker & copy .env → docker compose up -d → 访问 localhost 注册登录 → 配置模型供应商 → 创建知识库上传文档 → 创建应用关联知识库 → 测试与发布
整个部署过程的核心优势在于:
-
无需手动安装 PostgreSQL、Redis、Weaviate 等中间件
-
无需管理 Python 环境和依赖包
-
一键升级:拉取新镜像即可完成版本更新
-
服务状态通过 Docker Desktop 可视化监控
如果一切顺利,从零到完成一个可用的知识库问答系统,大约只需要 15-20 分钟。后续如需升级版本,只需:
git pull
docker compose pull
docker compose up -d