30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度这次我们来看一个在 Windows 环境下基于 Docker 本地部署 Dify 的完整方案。Dify 是一个开源的 AI 应用开发平台它最大的价值在于让你能像搭积木一样通过可视化工作流的方式快速构建和部署基于大语言模型的 AI 应用比如智能客服、内容生成、数据分析助手等。对于不想写复杂代码但又希望深度定制 AI 能力的开发者或团队来说这是一个非常高效的工具。本文将聚焦于 Windows 系统下的 Docker 部署路径。为什么强调 Docker因为它能最大程度地屏蔽环境差异解决“在我机器上能跑”的经典难题。我们将从零开始带你完成 Docker 环境准备、Dify 服务拉取与启动、基础配置并验证其核心功能。整个过程不涉及复杂的代码编译重点在于清晰的步骤和可复现的操作。如果你关心如何在本地快速搭建一个可用的 AI 应用开发与测试环境这篇文章可以直接收藏备用。1. 核心能力速览在深入部署细节前我们先快速了解 Dify 的核心能力和本次部署方案的关键信息。能力项说明项目类型开源 AI 应用开发平台 (LLM Ops)核心功能可视化工作流编排、多模型接入OpenAI/Claude/本地模型等、知识库RAG、Agent 能力、应用发布与 API 提供部署方式推荐使用 Docker Compose本文采用可一键启动所有依赖服务Web 前端、后端 API、数据库等硬件门槛无强制 GPU 要求。CPU 和内存足够运行 Docker 容器即可。如需接入本地大模型进行推理则需额外考虑模型本身的硬件需求显存/内存。显存占用Dify 平台本身不直接消耗大量显存。显存占用取决于你后续接入的本地推理模型如 Llama、Qwen 等。支持平台本文针对Windows 10/1164位系统使用 Docker Desktop。启动方式通过docker-compose命令一键启动所有服务。是否支持 API是。部署后提供完整的 RESTful API可用于集成到其他系统或进行二次开发。是否支持批量任务是。通过工作流可以设计批处理任务也可通过 API 批量调用。适合场景个人开发者本地 AI 应用原型开发、团队内部 AI 工具测试、教育学习 LLM 应用开发流程、需要私有化部署的 AI 能力中台。2. 适用场景与使用边界Dify 不是一个“开箱即用”的最终 AI 产品如 ChatGPT而是一个“生产 AI 产品的工厂”。理解这一点至关重要。它非常适合以下场景快速原型验证当你有一个 AI 应用的想法如自动生成周报、智能客服机器人、文档摘要工具可以用 Dify 在几小时内拖拽出可运行的原型无需从零编写 API 调用和逻辑代码。可视化编排复杂逻辑涉及多步骤判断、条件分支、多个模型调用串联的场景。用代码实现可能很繁琐但在 Dify 工作流中可以通过连线直观完成。集成自有知识库需要让 AI 应用基于特定文档公司制度、产品手册、技术文档进行问答。Dify 的知识库功能支持文本切分、向量化存储和检索增强生成RAG。统一管理多模型可以同时配置 OpenAI GPT-4、Claude、以及本地部署的 DeepSeek、ChatGLM 等模型并在应用中灵活切换或组合使用。它的使用边界和注意事项非“零代码”魔法虽然降低了开发门槛但仍需理解 AI 应用的基本概念如提示词工程、上下文长度、RAG 原理等才能设计出高效的工作流。性能依赖后端模型Dify 平台本身的响应速度很快但最终应用的生成速度、效果质量完全取决于你接入的模型 API 的性能。如果接入免费的慢速 API 或本地小模型体验会打折扣。生产环境考量本文的 Docker Compose 部署适合开发和测试。对于生产环境需要考虑高可用、数据备份、安全加固如 API 密钥管理、访问控制、性能监控和横向扩展这可能需要更复杂的 Kubernetes 部署或使用 Dify 官方云服务。数据与隐私在 Dify 中上传文档构建知识库或通过其调用第三方模型 API务必注意数据安全。敏感数据应确保在私有环境中处理并审慎评估所接入模型服务的数据使用政策。3. 环境准备与前置条件在 Windows 上通过 Docker 部署 Dify只需要准备好两个核心工具Docker Desktop 和 Git用于获取部署文件。以下是详细的准备清单。1. 操作系统要求Windows 10 64位版本 2004 及更高版本Build 19041 及以上或Windows 11。启用 WSL 2Docker Desktop for Windows 依赖 WSL 2 作为后端引擎。这是必须的步骤。管理员权限安装 Docker Desktop 和启用系统功能需要管理员权限。2. 硬件与资源要求CPU支持虚拟化技术VT-x/AMD-V并在 BIOS/UEFI 中已启用。内存建议至少8GB。如果计划在本地同时运行大型语言模型则需要更多内存16GB 或以上。磁盘空间至少预留20GB可用空间用于存放 Docker 镜像、容器和后续的模型文件。网络能够正常访问 Docker Hub 和 GitHub以下载镜像和代码。3. 软件安装清单Docker Desktop for Windows这是核心容器运行环境。Git for Windows用于克隆 Dify 的 Docker 部署仓库。文本编辑器如 VS Code、Notepad用于编辑配置文件。4. 关键检查点部署前必做虚拟化已启用在任务管理器的“性能”标签页中查看“虚拟化”是否显示为“已启用”。WSL 2 已安装并启用在 PowerShell管理员中运行wsl --install通常可以一键安装。安装后运行wsl --set-default-version 2设置为默认版本。端口未被占用Dify 默认使用80端口HTTP和5001端口后端 API。确保这些端口没有被 IIS、Skype、其他 Web 服务器占用。如果占用后续可以在配置文件中修改。4. 安装部署与启动方式一切准备就绪我们开始实战部署。整个过程分为三步安装 Docker Desktop、获取 Dify 部署文件、启动服务。4.1 安装与配置 Docker Desktop下载安装包访问 Docker 官网下载适用于 Windows 的 Docker Desktop Installer。运行安装程序双击安装包跟随向导完成安装。安装过程中会提示你启用 WSL 2 功能请务必勾选同意。启动 Docker Desktop安装完成后从开始菜单启动 Docker Desktop。首次启动需要接受服务条款并等待后端服务初始化完成状态栏鲸鱼图标稳定。验证安装打开 PowerShell 或命令提示符输入以下命令如果能看到版本信息说明安装成功。docker --version docker-compose --version可选配置镜像加速为了提升拉取镜像的速度可以配置国内镜像源。在 Docker Desktop 设置中找到Docker Engine在配置文件中添加或修改registry-mirrors项。{ registry-mirrors: [ https://docker.mirrors.ustc.edu.cn, https://hub-mirror.c.163.com ] }修改后点击“Apply Restart”重启 Docker。4.2 获取 Dify Docker 部署文件Dify 官方提供了标准化的 Docker Compose 部署文件这是最推荐的部署方式。打开 PowerShell建议在计划存放项目的目录如D:\Projects中右键选择“在终端中打开”或“Open in Windows Terminal”。克隆部署仓库执行以下命令将部署配置文件下载到本地。git clone https://github.com/langgenius/dify.git进入部署目录克隆完成后进入包含docker-compose.yaml文件的目录。cd dify/docker这个docker文件夹就是本次部署的核心目录。4.3 启动 Dify 服务在启动前你可以先查看一下docker-compose.yaml文件了解它会启动哪些服务通常包括 Web 前端、后端 API、PostgreSQL 数据库、Redis 等。默认配置即可运行。启动所有服务在dify/docker目录下运行以下命令。这会拉取所有必需的 Docker 镜像并启动容器。docker-compose up -d-d参数表示在后台运行detached mode。首次运行需要下载镜像耗时取决于网络速度请耐心等待。查看服务状态启动完成后使用以下命令查看容器是否全部正常运行。docker-compose ps你应该看到所有服务的状态State都是Up。查看实时日志如果想观察启动过程或排查问题可以查看特定服务的日志。# 查看所有服务的日志 docker-compose logs # 持续查看并跟踪日志 docker-compose logs -f # 仅查看后端 API 服务的日志 docker-compose logs -f api当看到日志中出现类似Application startup complete.或服务健康检查通过的提示时说明启动成功。5. 功能测试与效果验证服务启动后我们通过浏览器访问并进行基础功能测试确保 Dify 平台工作正常。5.1 访问 Web 界面打开浏览器在本地电脑上打开 Chrome、Edge 等浏览器。访问地址在地址栏输入http://localhost。如果无法访问请检查 Docker Desktop 是否在运行并用docker-compose ps确认服务状态。也可能是端口冲突尝试访问http://localhost:5001后端或http://localhost:3000前端如果配置不同。最根本的方法是查看docker-compose.yaml中web服务的端口映射。初始化设置首次访问会进入初始化页面需要设置管理员账号邮箱和密码。请务必记住这个密码。5.2 基础配置接入第一个 AI 模型Dify 本身不包含模型它需要连接一个“模型供应商”。我们以接入 OpenAI 兼容的 API例如 OpenAI 官方 API、或本地部署的 Ollama、FastChat 等提供的兼容接口为例。登录后台使用刚才创建的管理员账号登录。进入模型配置在左侧菜单栏找到「设置」-「模型供应商」。添加供应商点击「添加模型供应商」选择「OpenAI 兼容」。填写配置模型类型选择文本生成或对话。模型名称自定义如 “My-GPT-3.5”。模型 ID填写对应模型的 ID例如gpt-3.5-turbo如果使用 OpenAI API。API 密钥如果你使用 OpenAI则填入你的 OpenAI API Key。这是最关键的一步。如果你使用本地部署的模型如通过 Ollama 运行的 Llama3则 API Key 可以随意填写如sk-xxx但API 端点必须改为你本地模型的地址例如http://host.docker.internal:11434/v1。注意host.docker.internal是 Docker 容器访问宿主机你的 Windows 电脑的特殊域名。API 端点对于 OpenAI是https://api.openai.com/v1。对于本地模型则是对应的本地地址。保存并测试填写完毕后点击「保存」然后可以点击「测试」按钮验证连接是否成功。如果显示“测试成功”说明模型接入配置正确。5.3 创建并测试第一个 AI 应用对话型现在我们来创建一个最简单的对话应用。创建应用点击顶部「创建应用」选择「对话型应用」输入应用名称如“我的第一个助手”。配置提示词进入应用编辑界面。在「提示词编排」页面系统已经提供了一个默认的对话提示词。你可以先保持默认或者简单修改一下系统提示词例如“你是一个乐于助人的助手请用中文回答用户的问题。”选择模型在右侧的「模型」区域点击下拉菜单选择你刚刚配置好的模型如 “My-GPT-3.5”。预览与对话点击右上角的「预览」按钮会在右侧打开一个对话窗口。在底部输入框尝试问一个问题例如“你好请介绍一下你自己。”观察结果如果配置正确你应该能收到 AI 模型的回复。这证明从 Dify 前端 - Dify 后端 - 外部模型 API 的整个链路已经打通。5.4 测试知识库功能可选知识库是 Dify 的核心功能之一测试它能验证平台的数据处理能力。创建知识库在左侧菜单进入「知识库」点击「创建知识库」命名并创建。上传文档进入创建好的知识库点击「上传文件」可以上传一个 TXT、PDF、Word 或 Markdown 文件建议先用一个简单的 TXT 文件测试内容为几段介绍性文字。索引处理上传后文件会进入“处理中”状态。Dify 会自动对文档进行分段、清洗、向量化处理。处理完成后状态会变为“已索引”。在应用中启用知识库回到刚才创建的对话应用在「提示词编排」页面找到「上下文」区域点击「添加」-「知识库」。选择你刚创建的知识库。进行检索问答再次进入「预览」对话窗口。现在你可以提问与上传文档内容相关的问题。例如如果你的文档是关于“Dify 部署”的你可以问“如何启动 Dify 服务” 模型应该能基于你上传的文档内容生成答案而不是通用回答。6. 接口 API 与批量任务Dify 不仅提供 Web 界面更提供了完整的 API方便你将 AI 能力集成到自己的系统或进行批量处理。6.1 获取 API 密钥在 Dify 工作台点击右上角个人头像进入「个人设置」。在「API 密钥」选项卡中点击「创建新的密钥」。为密钥命名如“测试用”并复制生成的密钥字符串。此密钥只显示一次请妥善保存。6.2 调用对话应用 API假设你创建的应用 ID 是app-xxxxxxAPI 密钥是sk-xxxxxx。使用 curl 测试curl -X POST \ http://localhost/v1/chat-messages \ -H Authorization: Bearer sk-xxxxxx \ -H Content-Type: application/json \ -d { inputs: {}, query: 你好今天天气怎么样, response_mode: blocking, conversation_id: , user: test-user-001, app_id: app-xxxxxx }http://localhost/v1/chat-messages: 这是 Dify 后端 API 的地址。如果前端端口不是 80请相应调整。response_mode:blocking为同步等待响应streaming为流式输出。使用 Python 测试import requests import json api_key sk-xxxxxx app_id app-xxxxxx api_base http://localhost/v1 # 根据你的实际地址修改 url f{api_base}/chat-messages headers { Authorization: fBearer {api_key}, Content-Type: application/json } payload { inputs: {}, query: 请用Python写一个Hello World程序。, response_mode: blocking, conversation_id: , user: api-test-user-001, app_id: app_id } response requests.post(url, headersheaders, jsonpayload, timeout60) if response.status_code 200: result response.json() print(回答内容:, result.get(answer, )) print(完整响应:, json.dumps(result, indent2, ensure_asciiFalse)) else: print(f请求失败状态码: {response.status_code}) print(response.text)6.3 设计批量任务Dify 本身没有内置的“批量任务队列”界面但通过 API你可以轻松实现批量处理。思路准备输入数据将需要处理的批量问题或数据存放在一个文件如questions.txt或tasks.json中。编写脚本循环调用使用 Python、Shell 等脚本语言读取文件中的每一条数据构造 API 请求并发送。处理与保存结果接收 API 返回的响应将结果保存到另一个文件或数据库中。加入容错机制在脚本中加入错误重试、延迟请求避免速率限制、日志记录等功能。简易 Python 批量脚本示例import requests import json import time api_key sk-xxxxxx app_id app-xxxxxx api_base http://localhost/v1 def ask_dify(question, user_id): url f{api_base}/chat-messages headers {Authorization: fBearer {api_key}, Content-Type: application/json} payload { inputs: {}, query: question, response_mode: blocking, conversation_id: , user: user_id, app_id: app_id } try: response requests.post(url, headersheaders, jsonpayload, timeout30) response.raise_for_status() return response.json().get(answer, ) except requests.exceptions.RequestException as e: print(f请求出错 [{question}]: {e}) return None # 模拟批量问题 questions [ 什么是机器学习, Python的主要优点是什么, 解释一下RESTful API。 ] results [] for i, q in enumerate(questions): print(f处理中: {q}) answer ask_dify(q, fbatch-user-{i}) results.append({question: q, answer: answer}) time.sleep(1) # 避免请求过快 # 保存结果 with open(batch_results.json, w, encodingutf-8) as f: json.dump(results, f, indent2, ensure_asciiFalse) print(批量处理完成结果已保存至 batch_results.json)7. 资源占用与性能观察部署完成后了解其资源消耗情况有助于评估服务器负载和进行优化。7.1 观察 Docker 容器资源占用使用 Docker Desktop 仪表板打开 Docker Desktop在 “Containers” 标签页可以看到所有运行中的容器列表并直观地看到每个容器的 CPU、内存使用率。使用命令行工具在终端中可以使用docker stats命令实时查看所有容器的资源使用情况。docker stats这会显示类似下面的实时数据流CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS a1b2c3d4e5f6 dify-docker-web-1 0.15% 150MiB / 16GiB 0.91% 1.2kB / 0B 0B / 0B 15 x1y2z3a4b5c6 dify-docker-api-1 1.20% 450MiB / 16GiB 2.74% 15.6kB / 22.1kB 0B / 0B 8 ... (其他容器如 postgres, redis)重点关注api和web服务它们是与用户交互的核心。内存MEM USAGE在空闲状态下整个 Dify 栈包括数据库和 Redis通常占用 1GB 左右内存。当进行知识库文档处理或高频 API 调用时内存使用会上升。CPU常规操作下 CPU 占用很低。大量文档向量化计算时会短暂升高。7.2 性能影响因素模型 API 响应速度这是影响用户体验的最大因素。如果接入的是远程 API如 OpenAI网络延迟和 API 本身的响应时间占主导。如果接入本地模型则取决于本地模型的推理速度。知识库处理首次为知识库上传大量文档并进行索引时会消耗较多的 CPU 和内存并持续一段时间。这是正常现象。数据库性能PostgreSQL 容器在数据量增大后其 I/O 性能可能成为瓶颈。确保 Docker 数据卷存储在 SSD 上会有帮助。网络配置确保 Docker 容器网络特别是host.docker.internal到宿主机的连通性良好这对于接入本地运行的模型至关重要。7.3 如何降低资源占用如果必要精简服务如果仅做测试可以修改docker-compose.yml注释掉不需要的服务例如如果暂时不用知识库的全文检索可以不用weaviate向量数据库。但api、web、postgres、redis是核心不建议移除。调整容器资源限制可以在docker-compose.yml中为每个服务设置资源限制deploy.resources.limits但需谨慎设置过低可能导致服务异常。接入轻量级模型如果追求极致的本地响应速度可以接入参数量更小的本地模型如 Phi-3-mini, Qwen1.5-7B-Chat 等。8. 常见问题与排查方法部署和使用过程中可能会遇到一些问题以下是常见问题的排查思路。问题现象可能原因排查方式解决方案docker-compose up -d失败或镜像拉取超时1. 网络问题无法连接 Docker Hub。2. 磁盘空间不足。3. WSL 2 未正确运行。1. 运行docker pull nginx:alpine测试网络。2. 检查系统盘剩余空间。3. 在 PowerShell 运行wsl -l -v查看 WSL 状态。1. 配置 Docker 镜像加速器。2. 清理磁盘或更改 Docker 镜像存储路径。3. 重启 WSLwsl --shutdown然后重启 Docker Desktop。服务状态非Up或频繁重启1. 端口冲突80, 5432, 6379等。2. 容器内服务启动失败如数据库初始化错误。3. 内存不足。1. 运行docker-compose ps查看状态docker-compose logs [服务名]查看具体错误日志。2. 使用netstat -ano | findstr :80检查端口占用。1. 修改docker-compose.yml中的端口映射如将80:80改为8080:80。2. 根据日志错误信息搜索解决方案常见于数据库连接或权限问题。3. 增加系统内存或调整 Docker Desktop 资源限制。访问http://localhost失败1. 服务未成功启动。2. 防火墙阻止。3. 浏览器缓存或代理问题。1. 确认容器在运行 (docker-compose ps)。2. 尝试用curl http://localhost:80在命令行测试。3. 检查 Windows 防火墙设置。1. 重启服务docker-compose down docker-compose up -d。2. 临时关闭防火墙测试或将 Docker 相关进程加入白名单。3. 使用无痕模式访问。模型供应商测试失败1. API 密钥错误。2. API 端点地址错误或不可达。3. 网络代理问题如果使用国外 API。4. 本地模型服务未启动。1. 仔细核对 API Key 和 Endpoint。2. 在宿主机Windows上用浏览器或curl测试 API 端点是否可达。3. 对于本地模型在容器内测试连通性docker exec -it dify-api-1 curl http://host.docker.internal:11434。1. 重新生成或复制 API Key。2. 确保本地模型服务已启动并监听正确端口。3. 对于 Docker 内访问宿主机确保使用host.docker.internal这个域名。知识库文档处理失败1. 文档格式不支持或损坏。2. 文本切分或向量化过程出错。3. 向量数据库服务异常。1. 查看知识库处理任务的错误信息。2. 检查api和weaviate如果使用容器的日志。1. 尝试上传格式简单、体积较小的 TXT 文件测试。2. 重启相关服务docker-compose restart api weaviate。3. 确保有足够的磁盘和内存空间。API 调用返回 401/403 错误1. API 密钥未提供或错误。2. 请求头格式不正确。3. 应用 ID 错误或应用未发布。1. 检查请求头中的Authorization: Bearer key格式。2. 确认使用的应用 ID 是已发布应用的应用 ID可在应用概览页找到。1. 在 Dify 设置中重新复制正确的 API Key。2. 确保在 API 请求中使用了正确的app_id。流式输出streaming不工作1. 客户端未正确处理流式响应。2. 网络或代理中断了长连接。1. 使用curl测试流式接口观察是否能持续收到数据块。2. 检查前端或客户端代码是否正确处理 Server-Sent Events (SSE)。1. 参考 Dify API 文档使用正确的流式调用方式。对于前端使用EventSource或fetch读取流。9. 最佳实践与使用建议为了让你的 Dify 本地部署更稳定、高效以下是一些经验性的建议。数据持久化Docker Compose 配置中通常已经将 PostgreSQL、Redis 的数据目录映射到了本地卷./data等。定期备份这些目录特别是在升级或重建容器前。这是你的应用数据核心。版本管理记录下你所使用的 Dify Docker 镜像版本在docker-compose.yml中查看。在升级时建议先查看官方 Release Notes并在测试环境验证后再升级生产环境。配置分离不要直接修改docker-compose.yml来管理环境变量。可以创建一个.env文件将数据库密码、外部 API 密钥等敏感信息放在里面并在docker-compose.yml中通过${VARIABLE}引用。确保.env文件不被提交到代码仓库。接入本地模型对于本地模型如通过 Ollama、LM Studio 部署的在 Dify 中配置时API Base使用http://host.docker.internal:端口。务必确保本地模型服务已启动并允许来自局域网的连接监听0.0.0.0而非127.0.0.1。应用发布与 API 安全在 Dify 中创建的应用需要点击“发布”后才能通过 API 访问。对于公开的 API务必做好鉴权可以考虑使用 Nginx 反向代理添加额外的访问控制或使用 Dify 的企业版功能。性能监控对于长期运行的服务可以简单使用docker stats或 Docker Desktop 监控资源趋势。如果需要更详细的监控可以考虑集成 Prometheus 和 Grafana。工作流设计从简单的对话应用开始逐步尝试复杂的工作流。善用“变量”和“条件判断”节点可以构建出非常灵活的逻辑。设计时注意每个节点的输入输出合理命名变量以便于维护。知识库优化上传文档前如果文档质量不高如扫描PDF有大量乱码预处理一下效果会更好。可以调整文本分割器Splitter的参数如块大小、重叠长度以平衡检索精度和上下文完整性。10. 总结与下一步通过以上步骤你应该已经在 Windows 系统上利用 Docker 成功部署了一个功能完整的 Dify AI 应用开发平台。整个过程的核心在于利用 Docker 化解了环境依赖的复杂性让你能专注于 Dify 平台本身的功能。最值得尝试的下一步探索工作流不要停留在对话应用。尝试创建一个“工作流”应用例如设计一个自动根据关键词生成社交媒体文案并配图的流程体验可视化编排的强大。深度集成本地模型将 Ollama 中运行的 Llama 3、Qwen 等优秀开源模型接入 Dify打造完全本地化、私有的 AI 应用。连接真实数据源尝试使用 Dify 的“工具”功能连接一个公开的 API如天气、股票让 AI 应用不仅能聊天还能获取实时信息并处理。团队协作邀请团队成员注册账号共同在同一个 Dify 实例上开发应用体验其协作功能。最容易踩的坑回顾端口冲突80、5432 等常用端口被占用导致服务启动失败。学会查看和修改docker-compose.yml中的端口映射。模型连接失败配置本地模型时API 端点地址错误是最常见问题牢记使用host.docker.internal访问宿主机服务。数据丢失未备份 Docker 卷就直接删除容器导致应用和知识库数据丢失。务必养成备份./data等目录的习惯。这个基于 Docker 的部署方案为你提供了一个干净、可复现、易于管理的本地 AI 开发沙盒。无论是用于学习、原型验证还是作为团队内部工具的开发平台它都是一个极佳的起点。建议将本文中的关键命令和配置保存下来以备后续查阅。 30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度