在 Win11 环境下搭建Docker + Dify + Ollama 本地 AI Agent

在 Win11 环境下搭建Docker + Dify + Ollama 本地 AI Agent
这是我的第一篇博客如果有不好的地方还请多多指教。可以先看文章内容如果觉得麻烦的话其实扣子是个不错的选择。扣子网址https://www.coze.cn/打开后在左侧点击扣子编程。正式开始我的配置介绍我的配置 RTX 4060 Laptop 8GB 显存 16GB 内存以下是我的从零搭建的步骤第一步下载DockerDocker官网https://www.docker.com/products/docker-desktop/Docker直接下载地址点击以下链接即可Download for Windows - AMD64适用于大部分电脑Download for Windows - ARM64第二步将自己的配置发给AI询问AI我的配置适合什么大模型我问了Gemini它给出以下三个大模型推荐模型核心优势建议用途显存建议Qwen2.5-Coder-7B中文适配王者。对 Java 常用框架Spring Boot, Mybatis支持极佳。日常学习与 Debug。当你需要快速查语法或改 Bug 时首选。Q8_0 量化 (约 7.5GB)DeepSeek-Coder-V3 (Small)代码逻辑天花板。V3 版本在处理复杂 Java 设计模式和算法上非常强悍。核心逻辑开发。遇到复杂的 Agent 逻辑编排或算法题时用它更稳。Q4_K_M 量化 (约 8-9GB)Llama-4-8B (Maverick)Agent 生态最强。作为 2026 年的标杆模型各类 Agent 框架对其兼容性最好。AI Agent 架构学习。学习如何调用工具、处理多轮对话状态。Q8_0 量化 (约 8GB)给出这三个的理由1国内开发环境Qwen (通义千问)针对中文技术文档和国内大厂常用的中间件有专门优化写出来的注释和命名更符合国内习惯。2Agent 进阶既然你想研究 AgentLlama-4-8B是必须的。目前主流的开源 Agent 框架如 LangGraph, CrewAI几乎都是优先适配 Llama 系列学习成本最低。3显存容错你的 8GB 显存跑 14B 模型如 DeepSeek V3 小参数版会稍微挤占一点内存RAM速度会降到 15-20 token/s虽然慢一点但逻辑会比 7B 深刻很多。第三步下载Ollama预计占用5.12GOllama网址https://ollama.com/Ollama直接下载链接https://ollama.com/download/OllamaSetup.exe点击Download开始下载注意Ollama会强制安装在 C 盘的程序文件夹中而且在安装过程中不会询问你想安装在哪里即是软件本身和模型下载地址默认在C盘。下载完后可以将模型下载地址进行更改这里我将下载模型地址放在了E盘的OllamaModels文件夹Ollama环境配置按下键盘上的Win S搜索“环境变量”选择“编辑系统环境变量”。在弹出的窗口中点击右下角的“环境变量”。在“用户变量”区域点击“新建”。变量名OLLAMA_MODELS变量值OllamaModels文件夹位置比如我的就是E:\OllamaModels记得连续点击三个确定。第四步下载大模型在OllamaModels的地址框中输入cmd来打开终端在终端输入ollama run qwen2.5-coder:7b这里是下载Qwen2.5-Coder-7B模型预计4.36 GB如果是要下载其他主流的模型也可以问AI#DeepSeek-R1目前最火的推理模型 ollama run deepseek-r1:7b #Llama 3.2 / 3.3Meta 开源标杆 ollama run llama3.2 # 3B轻量版适合普通电脑 ollama run llama3.3 # 70B强力版需要较高显存 #Qwen 2.5 / 3阿里通义千问中文支持极佳 ollama run qwen2.5 # 综合实力均衡 ollama run qwen3 # 最新版本 #Qwen2.5-Coder目前开源代码模型梯队最顶尖 ollama run qwen2.5-coder:7b #CodeLlamaMeta 专为编程优化的模型 ollama run codellama #Gemma 3Google 最新开源模型支持视觉识图 ollama run gemma3 #Llama 3.2 Vision ollama run llama3.2-vision可能在下载的时候会用到的命令功能命令查看已下载的模型ollama list仅下载不运行ollama pull 模型名查看正在运行的模型ollama ps删除某个模型ollama rm 模型名强制停止某个模型ollama stop 模型名如果出现pulling manifest pulling 60e05f210007: 6% ▕███ ▏ 280 MB/4.7 GB 1.1 MB/s 1h9m那就说明开始下载了。如果你在下载Ollama完后将Ollama的文件夹进行移动终端可能显示ollama 不是内部或外部命令也不是可运行的程序 或批处理文件。说明Ollama的Path 环境变量没有更改需要打开环境变量寻找Path变量里的Ollama将Ollama地址改为当前所在地址。记得连续点击三个确定。修改完后打开新的终端后可以在终端输入ollama --version如果出现ollama version is 0.15.4说明环境变量已经配置成功了如果是Warning: could not connect to a running Ollama instance Warning: client version is 0.15.4也不要怕出现这个Warning: could not connect的警告是因为 Ollama 的后端服务还没有启动。双击运行ollama app.exe就好了。如果已经打开了Ollama却还是显示Warning: could not connect按照以下步骤即可解决第一步清空所有进程重置状态关掉所有的终端窗口。右键任务栏的Ollama右键点击Quit。打开任务管理器CtrlShiftEsc在“详细信息”里找ollama.exe如果有全部右键“结束任务”。第二步只启动一次双击运行ollama app.exe第三步在新的终端输入ollama list如果显示​ ollama list NAME ID SIZE MODIFIED ​说明成功了如果依然 Warning说明你的系统变量OLLAMA_HOST可能被意外设置了。输入set OLLAMA_HOST看看如果没有这个变量那就是正常的。为什么是空白因为你还没开始下载模型。检查环境变量是否配置成功在新建的终端中分别输入where ollama和echo %OLLAMA_MODELS%如果输出结果分别是Ollama 可执行文件所在的磁盘路径OllamaModels文件夹所在地址下载大模型成功的标志当你看到 CMD 窗口出现以下内容时说明模型已经下载好了你可以直接开始输入你需要提问的内容。 Send a message或者可以在新的终端输入来验证ollama list如果显示下面的内容那就是下载好了我这边是下载了qwen2.5-coder:7b模型ollama list NAME ID SIZE MODIFIED qwen2.5-coder:7b dae161e27b0e 4.7 GB 4 hours ago注下载的时间较长我们在等待下载完成的同时我们可以进行第四步下载Dify。第五步下载Dify打开终端分别输入以下内容# 1. 下载 Dify 源代码 git clone https://github.com/langgenius/dify.git # 2. 进入部署目录 cd dify/docker # 3. 复制配置文件 copy .env.example .env # 4. 启动 Dify (这会下载很多镜像建议在网速快的时候操作) docker-compose up -d当你运行docker compose up -d时它会开始下载大概10 多个容器镜像包括数据库 PostgreSQL、缓存 Redis、Dify 后端等可能需要一段时间。第六步打开Dify页面启动成功后在浏览器访问http://localhost或者输入 http://127.0.0.1:8090 就能看到 Dify 的界面了。加载需要一定时间可如果一直都在加载界面的话可以去终端输入docker-compose ps如果显示以下内容说明是关键组件api, web, nginx, db全部处于 Up 状态\dify\dockerdocker-compose ps NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS docker-api-1 langgenius/dify-api:1.12.0 /bin/bash /entrypoi… api 14 minutes ago Up 14 minutes 5001/tcp docker-db_postgres-1 postgres:15-alpine docker-entrypoint.s… db_postgres 14 minutes ago Up 14 minutes (healthy) 5432/tcp docker-nginx-1 nginx:latest sh -c cp /docker-e… nginx 14 minutes ago Up 14 minutes 0.0.0.0:80-80/tcp, [::]:80-80/tcp, 0.0.0.0:443-443/tcp, [::]:443-443/tcp docker-plugin_daemon-1 langgenius/dify-plugin-daemon:0.5.3-local /bin/bash -c /app/e… plugin_daemon 14 minutes ago Up 14 minutes 0.0.0.0:5003-5003/tcp, [::]:5003-5003/tcp docker-redis-1 redis:6-alpine docker-entrypoint.s… redis 14 minutes ago Up 14 minutes (healthy) 6379/tcp docker-sandbox-1 langgenius/dify-sandbox:0.2.12 /main sandbox 14 minutes ago Up 14 minutes (healthy) docker-ssrf_proxy-1 ubuntu/squid:latest sh -c cp /docker-e… ssrf_proxy 14 minutes ago Up 14 minutes 3128/tcp docker-weaviate-1 semitechnologies/weaviate:1.27.0 /bin/weaviate --hos… weaviate 14 minutes ago Up 14 minutes docker-web-1 langgenius/dify-web:1.12.0 /bin/sh ./entrypoin… web 14 minutes ago Up 14 minutes 3000/tcp docker-worker-1 langgenius/dify-api:1.12.0 /bin/bash /entrypoi… worker 14 minutes ago Up 14 minutes 5001/tcp docker-worker_beat-1 langgenius/dify-api:1.12.0 /bin/bash /entrypoi… worker_beat 14 minutes ago Up 14 minutes 5001/tcp如果网页一直在加载最可能的原因是端口冲突或网络代理干扰。我们按顺序快速解决1. 强制使用 IP 访问跳过 localhost 解析有时候 Windows 的localhost解析会有延迟。请直接在浏览器地址栏输入http://127.0.0.1注意不要加 8080 或 5001Dify 默认映射的是 80 端口。2. 检查 80 端口是否被占用由于docker-nginx-1虽然显示 Up但如果 80 端口被你电脑上其他的占用了请求就进不去。1新开一个终端2在终端输入 netstat -ano | findstr :80如果返回的最后一列PID对应的程序不是 Docker那么端口就冲突了。解决方法方案一找出并杀掉占用进程最推荐打开任务管理器Ctrl Shift Esc切换到“详细信息”选项卡点击“PID”列进行排序找到4780和9596。如果是System(PID 4) 或者inetinfo.exe那是 Windows 自带的服务通常需要去“启用或关闭 Windows 功能”里关掉Internet Information Services (IIS)。然后再访问http://127.0.0.1。方案二给 Dify 换个端口最稳妥不影响系统如果你不想动系统服务我们直接让 Dify 避开 80 端口停止 Dify docker-compose down修改配置文件 用记事本打开docker-compose.yaml。 找到nginx:服务下的ports:部分你会看到CTRLF开始关键词搜索也可以交给AI来找ports: - 80:80 - 443:443把它改成比如改成 8090ports: - 8090:80 - 443:443重新启动 docker-compose up -d访问新地址 在浏览器输入http://127.0.0.1:80903. 关闭梯子它们可能会拦截localhost的请求。4. 终极重启大法如果上述都不行可能是某个容器内部卡住了在新的终端执行这个命令组合 docker-compose stop docker-compose startstart比up -d快因为它只是启动已经建好的容器不重新检查配置。5. 现状确认Ollama 模型如果Ollama 模型没下好它在高强度占用你的硬盘 IO这会导致 Docker 响应极慢。内存检查看看任务管理器里的内存占用。如果已经到了15GB/16GBDify 这种重型应用会因为频繁使用虚拟内存而导致网页“假死”。如果还是不行可以在终端输入检查 API 容器的实时进度docker-compose logs -f api如果看到很多MIGRATING或SUCCESS说明它正在拼命创建数据库表请继续耐心等待 3-5 分钟。如果看到Error: Connection refused说明 API 还没连上数据库容器可以再等一会。也可以在浏览器页面按下Ctrl F5进行强制刷新或者尝试用浏览器的无痕模式Ctrl Shift N重新访问http://127.0.0.1:8090终极解决如果超过 10 分钟还没动静如果日志一直不更新可能是由于内存不足导致某个关键容器启动失败请重启 Difydocker-compose restart api web如果刷新后依然超过 1 分钟没动静可以在终端运行单独重启一下前端容器docker-compose restart web重启后可以输入来查看前端日志docker-compose logs -f web记得要重新访问http://127.0.0.1:8090或者刷新页面。还是不行可以点击F12查看控制台如果出现了反复出现的红色报错TypeError: Failed to construct URL: Invalid URL表明 Dify 的前端代码在尝试拼接访问地址时失败了。这通常是因为.env配置文件中的某个 URL 格式不规范比如多了一个空格、少了一个http://或者环境变量为空。1检查并修正.env配置文件从资源管理器中打开 \dify\docker目录用记事本打开.env文件。检查空值或非法字符确保没有任何一项 URL 开头的变量末尾带着空格。补充协议头确保所有涉及 URL 的变量都以http://或https://开头。重点排查项可以给AI排查CONSOLE_API_URLCONSOLE_WEB_URLSERVICE_API_URLAPP_API_URLAPP_WEB_URL可以统一设为http://127.0.0.1:8090这个是我的本地端口号注意不要弄错了# 修改前CONSOLE_API_URL # 修改后 CONSOLE_API_URLhttp://127.0.0.1:8090 # 修改前CONSOLE_WEB_URL # 修改后 CONSOLE_WEB_URLhttp://127.0.0.1:8090 # 修改前SERVICE_API_URL # 修改后 SERVICE_API_URLhttp://127.0.0.1:8090 # 修改前APP_API_URL # 修改后 APP_API_URLhttp://127.0.0.1:8090 # 修改前APP_WEB_URL # 修改后 APP_WEB_URLhttp://127.0.0.1:8090 # 修改这个触发地址 [cite: 5] TRIGGER_URLhttp://127.0.0.1:8090并在文件末尾检查这个模板地址# 修改前ENDPOINT_URL_TEMPLATEhttp://localhost/e/{hook_id} # 修改后 ENDPOINT_URL_TEMPLATEhttp://127.0.0.1:8090/e/{hook_id}修改完后同步 EXPOSE 端口设置为了保险建议在.env里也同步一下这个变量 # 找到这两行 EXPOSE_NGINX_PORT80 EXPOSE_NGINX_SSL_PORT443 # 修改为 EXPOSE_NGINX_PORT8090 EXPOSE_NGINX_SSL_PORT443修改完.env后在新的终端输入#彻底移除旧的配置残留 docker-compose down #重新根据新环境变量创建 docker-compose up -d修改完.env后让 Docker 重新读取配置在终端输入#关闭 docker-compose down #启动 docker-compose up -d第七步成功打开Dify页面成功打开后注册管理员账户提供邮箱、名字、密码。然后就成功进入到Dify页面了。鼠标移至右上角打开设置。点击模型供应商进行安装Ollama我这边已经安装完成了安装完后就是上图所示点击添加模型模型类型LLM模型名称输入你所下载的模型名称比如我下载的qwen2.5-coder:7b基础 URLhttp://host.docker.internal:11434模型类型对话模型上下文长度(虽然默认是 4096但 Qwen2.5 支持更长。如果和我的一样是 16GB 的内存设为8192或16384比较稳妥既能看长代码又不会爆内存)最大 token 上限4096是否支持 Vision (视觉)否(Qwen2.5-Coder 是纯文本/代码模型不支持图片识别建议选“否”以免报错)。是否支持函数调用 (Tool Call)是这个是AI Agent核心功能——比如让 AI 自动去查数据库或运行代码全靠这个功能点击添加。点击右上角的X或者点击ESC退出设置页面回到主页面。恭喜你完成了从零搭建 Dify Ollama 本地 AI Agent下一次打开的步骤1打开 Docker Desktop2打开 ollama3在 ~\dify\docker 进入终端输入 docker-compose up -d4打开网址 http://127.0.0.1:8090记得端口号不要输错这个是我的端口号注意输入完 docker-compose up -d 后关闭终端不会关闭。需要输入才可以关闭。docker-compose down谢谢你的观看。