本地部署 Dify + DeepSeek 搭建AI知识问答客服全流程复盘 从零开始在 Windows 10 上部署开源 AI 知识问答平台 Dify对接 DeepSeek API 实现 LLM 驱动的智能客服。全程踩坑实录含 Docker 加速器配置、端口冲突解决、FastCGI 共存方案等实战细节。Dify v1.16.1·DeepSeek API·Docker Desktop·Windows 1001 为什么选 Dify DeepSeek企业知识库 AI 问答客服是当下最火的 AI 落地场景之一。市面上有三个主流开源方案平台协议特点适用DifyMIT全功能知识库 工作流 API 客服商用首选FastGPTApache 2.0专做知识库问答工作流强垂直问答MaxKBGPL轻量上手快简单 QA选Dify的理由MIT 协议可以商用功能最全知识库、工作流、API、客服机器人一条龙社区活跃度高Docker 部署相对成熟。选DeepSeek API的理由价格屠夫。输入 0.5 元/百万 token输出 2 元/百万 token。充 10 块钱够一个小客服用好几个月。对比 OpenAI 便宜两个数量级且中文能力一流。指标数值说明¥10充值够用数月DeepSeek API 费用0.5元/百万输入Token输入价格14Docker容器数Dify 全部组件0显卡要求走 API 路线无需 GPU02 环境准备2.1 前置条件操作系统Windows 10 19045需支持 WSL 2无独立显卡走 API 路线不需要 GPU已有 Apache PHP 环境phpStudy后面会提到端口冲突问题网络环境国内网络GitHub 和 Docker Hub 需要代理2.2 安装 WSL 2 UbuntuDocker Desktop 依赖 WSL 2 运行 Linux 容器。打开 PowerShell管理员执行wsl--install-d Ubuntu--no-launch安装完成后必须重启电脑WSL 2 内核才会生效。⚠注意重启前可以先下载 Docker Desktop 安装包重启后直接装省一轮等待。2.3 安装 Docker Desktop从 Docker 官网下载 Windows 版安装包。安装时选择Per-user installation不需要管理员密码勾选Use WSL 2。安装完成后启动 Docker Desktop等任务栏鲸鱼图标稳定不再动画表示 WSL 2 后端就绪。坑 ① — Docker 命令找不到安装后新开终端docker命令找不到。原因是 Per-user 安装的 PATH 没有自动刷新到当前终端。手动添加$env:PATH C:\Users\用户名\AppData\Local\Programs\DockerDesktop\resources\bin;$env:PATH验证docker --version输出Docker version 29.7.2即正常。03 配置国内镜像加速器关键这是整个部署过程中最大的拦路虎。Docker Hubregistry-1.docker.io在国内基本无法直连所有镜像拉取都会超时。错误信息failed to resolve reference docker.io/library/busybox:latest: failed to do request: Head https://registry-1.docker.io/v2/...: dialing registry-1.docker.io:443 container via direct connection because Docker Desktop has no HTTPS proxy: connecting to registry-1.docker.io:443: dial tcp [...] connectex: A connection attempt failed...3.1 修改 daemon.json编辑%USERPROFILE%\.docker\daemon.json添加registry-mirrors{builder:{gc:{defaultKeepStorage:20GB,enabled:true}},experimental:false,registry-mirrors:[https://docker.1ms.run,https://docker.m.daocloud.io]}3.2 修复凭证助手配置镜像后还会遇到第二个错误error getting credentials - err: exec: docker-credential-desktop: executable file not found in %PATH%, out: 编辑%USERPROFILE%\.docker\config.json把credsStore设为null{auths:{},credsStore:null,currentContext:desktop-linux}原因docker-credential-desktop.exe在 Docker Desktop 的 bin 目录中但docker compose执行时的子进程 PATH 不包含该目录。拉取公共镜像不需要认证直接禁用凭证助手即可。3.3 重启 Docker Desktop 使配置生效修改配置文件后必须重启 Docker Desktop# 关闭所有 Docker 进程Get-Process|Where-Object{$_.Name-matchdocker|Docker}|Stop-Process-Force# 重新启动Start-Process$env:LOCALAPPDATA\Programs\DockerDesktop\Docker Desktop.exe# 等待 120 秒让 WSL 后端完全初始化Start-Sleep-Seconds 120# 验证docker pull hello-world⚠关键经验Docker Desktop 重启后 WSL 后端需要至少 90-120 秒才能完全就绪。如果在 60 秒内执行docker compose up守护进程会间歇性掉线。判断标准docker info能稳定返回 Server Version 即就绪。04 部署 Dify4.1 下载源码GitHub 直接下载在国内基本超时使用ghproxy.net代理# 创建目录New-Item-ItemType Directory-PathD:\dify-Force# 通过代理下载$ProgressPreferenceSilentlyContinueInvoke-WebRequest-Urihttps://ghproxy.net/https://github.com/langgenius/dify/archive/refs/heads/main.zip-OutFileD:\dify\dify.zip# 解压Expand-Archive-PathD:\dify\dify.zip-DestinationPathD:\dify-Force解压后源码在D:\dify\dify-mainDocker 配置在D:\dify\dify-main\docker目录。4.2 配置 .envcd D:\dify\dify-main\dockerCopy-Item.env.example.env修改.env中的端口配置避免和已运行的 Apache80 端口冲突EXPOSE_NGINX_PORT8080 EXPOSE_NGINX_SSL_PORT8443坑 ② — 端口冲突Dify 默认使用 80 端口和已有的 Apache 服务冲突。Nginx 容器虽然能启动但所有请求都被 Apache 拦截返回 403。改为 8080 后正常。4.3 启动全部容器docker compose up-d这会拉取 14 个容器镜像并启动包括Nginx、Dify API、Web、Worker、Plugin Daemon、Agent Backend、PostgreSQL、Redis、Weaviate向量数据库、Sandbox、SSRF Proxy 等。拉取过程约 10-15 分钟取决于网络完成后验证dockerps--formattable {{.Names}}\t{{.Status}}容器作用状态docker-nginx-1反向代理入口Updocker-api-1Dify 后端 APIUp (healthy)docker-web-1前端界面Updocker-worker-1异步任务处理Updocker-db_postgres-1PostgreSQL 数据库Up (healthy)docker-redis-1Redis 缓存Up (healthy)docker-weaviate-1向量数据库知识库检索Updocker-plugin_daemon-1插件守护进程Updocker-sandbox-1代码沙箱Up (healthy)4.4 首次访问浏览器打开http://localhost:8080首次会跳转到/install页面进行初始化设置创建管理员账号。坑 ③ — Install 页面一直加载首次访问时/install页面可能一直转圈。原因是 API 容器还在执行数据库迁移migration。查看日志docker logs docker-api-1 --tail 20看到Database migration successful!和Booting worker with pid后CtrlF5 刷新即可。05 配置 DeepSeek API5.1 获取 API Key打开 DeepSeek 开放平台手机号注册充值进入「API Keys」→「创建 API Key」→ 复制保存只显示一次5.2 在 Dify 中配置登录 Dify 后台进入「设置」→「模型供应商」找到 DeepSeek点击配置粘贴 API Key保存选择模型deepseek-chat通用对话或deepseek-reasoner深度思考✅完成配置完成后Dify 就可以通过 DeepSeek API 驱动 AI 对话了。接下来可以创建知识库上传文档然后搭建问答应用或客服机器人。06 踩坑时间线以下是完整的部署时间线标注了每个失败点和解决方式✅03:00— 安装 WSL 2 Ubuntu — 一次成功需重启✅03:10— 安装 Docker Desktop — Per-user 模式正常❌03:11— docker 命令找不到 → PATH 未刷新手动添加 Docker bin 目录✅03:13— 下载 Dify 源码 — ghfast.top 超时换 ghproxy.net 成功37.7MB❌03:17— docker compose up — 凭证助手 docker-credential-desktop 找不到❌03:18— 修复凭证后重试 — Docker Hub 连不上国内网络❌03:19— 配置镜像加速器后重启 Docker — 守护进程间歇性掉线❌03:25— 等待 120s 后 Docker 稳定但 docker compose 又遇凭证错误✅03:32— 一条命令内完成修复凭证 启动 Docker docker compose up — 全部镜像拉取成功14 个容器启动❌03:39— Dify 访问 403 — Nginx 80 端口被 Apache 占用✅03:40— 改端口为 8080重启 Nginx 容器 — HTTP 200Dify 正常❌03:42— Install 页面一直加载 — API 容器在迁移数据库等迁移完成刷新即可✅03:45— Dify 初始化完成配置 DeepSeek API — 部署完成07 总结与经验技术栈最终状态组件版本说明Windows10 19045WSL 2 已启用Docker Desktop29.7.2Per-user 安装WSL 2 后端Docker Composev5.3.1Docker Desktop 内置Difyv1.16.114 个容器全部运行PostgreSQL15-alpineDify 内置数据库Redis6-alpineDify 内置缓存Weaviate1.27.0向量数据库知识库检索DeepSeek APIdeepseek-chatLLM 供应商Apache2.4.39已有服务80 端口Dify 访问地址http://localhost:8080避开 Apache 80 端口5 个核心经验经验 1 — 镜像加速器是前提国内环境部署 Docker 项目第一步就是配registry-mirrors。docker.1ms.run和docker.m.daocloud.io实测可用。不配加速器所有镜像拉取都会超时。经验 2 — 凭证助手必须禁用Docker Desktop 的credsStore: desktop在命令行环境下找不到docker-credential-desktop.exe。拉取公共镜像不需要认证直接设为null。经验 3 — Docker 重启后等够 120 秒WSL 2 后端初始化慢90 秒内守护进程可能不稳定。判断标准docker info能稳定返回版本号。经验 4 — 端口冲突提前规避已运行 Apache/Nginx 的机器上部署 Docker 项目务必检查端口冲突。Dify 默认 80 端口改为 8080 一劳永逸。经验 5 — 一条命令搞定沙箱环境在命令间可能清理后台进程。把「启动 Docker → 等待 → docker compose up」写在一条命令里避免守护进程在命令间隔期被回收。成本估算项目费用说明Dify免费MIT 开源DeepSeek API¥10 起百万 token 约 1 元服务器¥0本地部署无额外服务器域名/SSL¥0本地访问localhost:8080总计¥10几乎零成本启动后续规划知识库建设上传企业文档产品手册、FAQ、技术文档Weaviate 自动向量化检索客服机器人在 Dify 中创建应用关联知识库生成 API 接入网站多模型对比接入通义千问、Kimi 等国内 API对比效果商业化淘宝上架 Dify 部署服务参考定价 ¥500-1500漏刻有时Dify v1.16.1 DeepSeek API Docker Desktop 29.7.2