基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程
<p><img src="https://img2024.cnblogs.com/blog/1602588/202504/1602588-20250407125349301-1252664885.png" alt="" loading="lazy"></p><p> </p>
<h1> <span style="color: rgba(51, 102, 255, 1)">本次演示部署环境:Windows 10专业版,转载请说明出处</span></h1>
<h1>下载安装Docker</h1>
<p class="p"><span style="font-size: 14pt"> Docker官网:https://www.docker.com/</span></p>
<h2><strong>自定义Docker安装路径</strong></h2>
<p><span style="font-size: 14pt"> Docker默认安装在C盘,大小大概2.9G,做这行最忌讳的就是安装软件全装C盘,所以我调整了下安装路径。</span></p>
<p><span style="font-size: 14pt">新建安装目录:E:\MySoftware\Docker并将Docker安装包放在目录内,这里有个小细节,<span style="color: rgba(255, 0, 0, 1)"><strong>安装包名称一定要改下</strong></span>,官网下载下来的名称叫:Docker Desktop Installer.exe,一定要修改一下,不能用这个名字,否则等下在CMD命令安装的时候就会报错说被资源占用,因为Docker在安装时会解压一个一模一样名称的exe程序,重名就会导致安装失败,所以一定要改下名字。</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330121533911-565080043.png" alt="" loading="lazy"></p>
<p class="p"><span style="font-size: 14pt"> 在文件路径输入cmd回车</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330121617509-290736594.png" alt="" loading="lazy"></p>
<p><span style="font-size: 14pt"> 输入:</span></p>
<div>
<div>
<pre></pre>
<div class="cnblogs_code">
<pre><span style="font-family: verdana, geneva; font-size: 16px">.\<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Docker.exe</span><span style="color: rgba(128, 0, 0, 1)">"</span> install --installation-dir=E:\MySoftware\Docker</span></pre>
</div>
<pre><span style="font-size: 14pt; color: rgba(51, 102, 255, 1); font-family: "Microsoft YaHei"">语法:.\”安装程序名称” install --installation-dir=指定Docker安装的路径</span></pre>
</div>
</div>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330121723223-140541125.png" alt="" loading="lazy"></p>
<p class="p"><span style="font-size: 18px"> 安装完成后会提示Installation sueceeded</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330122230976-1496468705.png" alt="" loading="lazy"></p>
<p class="p"><span style="font-size: 14pt"> 桌面会出现Docker图标</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330122538857-75609996.png" alt="" loading="lazy"></p>
<p class="p"><span style="font-size: 14pt"> 启动Docker这里很多人会报这个错,这个是因为电脑没有WSL导致无法启动Docker容器。</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202504/1602588-20250402115939814-437138001.png" alt="" loading="lazy"></p>
<h1>下载WSL</h1>
<p class="p"><span style="font-size: 14pt"> 进入微软官网按步骤执行即解决,几分钟完成。</span></p>
<p class="p"><span style="font-size: 14pt">https://learn.microsoft.com/zh-cn/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package</span></p>
<p class="p"><span style="font-size: 14pt"> 用<span style="color: rgba(51, 102, 255, 1)"><strong>管理员身份打开Powershell窗口</strong></span>,粘贴微软官网的命令执行下载即可</span></p>
<p class="p"><span style="font-size: 14pt">粘贴执行:</span></p>
<div>
<div class="cnblogs_code">
<pre><span style="font-size: 16px; font-family: verdana, geneva">dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart</span></pre>
</div>
</div>
<div>
<div class="cnblogs_code">
<pre><span style="font-family: verdana, geneva; font-size: 16px">dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart</span></pre>
</div>
</div>
<div>
<div>
<div class="cnblogs_code">
<pre><span style="font-family: verdana, geneva; font-size: 16px">wsl --set-<span style="color: rgba(0, 0, 255, 1)">default</span>-version 2</span></pre>
</div>
<img src="https://img2024.cnblogs.com/blog/1602588/202504/1602588-20250402120133840-286647508.png" alt="" loading="lazy" style="font-family: "PingFang SC", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px"></div>
</div>
<p class="p"><span style="font-size: 14pt"> 下载完后会启动一个这个页面,可以关闭。</span></p>
<p class="p"><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330160434678-466192989.png" alt="" loading="lazy"></p>
<p><span style="font-size: 14pt"> 注:完成内核更新包安装后需重启系统(微软官方指南),再启动下Docker,出现这个界面就代表WSL和Docker都启动成功了。</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330160611170-375372702.png" alt="" loading="lazy"></p>
<h2>Docker镜像存储迁移</h2>
<p><span style="font-size: 14pt"> 这时进入Docker设置中,将Docker的镜像资源存放路径改一下,不然都会下载都C盘。</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330123542879-1235227191.png" alt="" loading="lazy"></p>
<h2>Docker<strong>镜像源加速配置</strong></h2>
<p><span style="font-size: 14pt"> <span style="color: rgba(255, 0, 0, 1)"><strong>至关重要的地方来了</strong></span>,打开Docker的设置中的-->Docker Engine,然后把国内的镜像源复制进去保存,我这里提供一些,如果失效了就百度找新的。</span></p>
<div class="cnblogs_code">
<pre><span style="font-size: 16px; font-family: verdana, geneva">{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://noohub.ru",
"https://huecker.io",
"https://dockerhub.timeweb.cloud",
"https://0c105db5188026850f80c001def654a0.mirror.swr.myhuaweicloud.com",
"https://5tqw56kt.mirror.aliyuncs.com",
"https://docker.1panel.live",
"http://mirrors.ustc.edu.cn/",
"http://mirror.azure.cn/",
"https://hub.rat.dev/",
"https://docker.ckyl.me/",
"https://docker.chenby.cn",
"https://docker.hpcloud.cloud",
"https://docker.m.daocloud.io"
]
} </span></pre>
</div>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330161603104-1974653255.png" alt="" loading="lazy"></p>
<p><span style="font-size: 14pt"> 保存镜像源后就可以试一下拉取镜像,如果拉取不成功也可以重启下Docker,还是不行提示超时就说明镜像源失效了,就在网上搜索下新的镜像源。</span></p>
<h2>测试拉取镜像</h2>
<p><span style="font-size: 14pt"> 在cmd命令窗口输入:</span></p>
<div>
<div>
<div class="cnblogs_code">
<pre><span style="font-family: verdana, geneva; font-size: 16px">docker pull hello-world</span></pre>
</div>
</div>
</div>
<p> <span style="font-size: 14pt"> 出现这个Status: Dowloaded newer image for hello-world:latest就代表镜像源没有问题。</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330162515538-2079175162.png" alt="" loading="lazy"></p>
<h1><strong>安装</strong><strong>Dify</strong></h1>
<h2>下载Dify代码包</h2>
<p><span style="font-size: 14pt"> 进入github下载Dify代码包:https://github.com/langgenius/dify</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330173105608-689671508.png" alt="" loading="lazy"></p>
<p><span style="font-size: 14pt"> 解压代码包后,把压缩后的文件夹复制到自己想要安装的目录下,这里复制一下.env.example文件,然后重命名一下改成.env</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330181051630-1330973095.png" alt="" loading="lazy"></p>
<p class="p"><span style="font-size: 14pt"> 在当前文件路径下输入CMD回车</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330182311125-553475309.png" alt="" loading="lazy"></p>
<h2 class="p">拉取Dify依赖镜像资源</h2>
<p class="p"><span style="font-size: 14pt"> 粘贴以下命令回车,会自动下载一些依赖资源。如果你的下载失败就是镜像源失效了,换一个镜像源,重新拉取镜像。</span></p>
<div>
<div>
<div class="cnblogs_code">
<pre><span style="font-family: verdana, geneva; font-size: 16px">docker-compose up -d</span></pre>
</div>
</div>
</div>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330182243174-68272185.png" alt="" loading="lazy"></p>
<p><span style="font-size: 14pt"> 下载完成</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330182633140-110621050.png" alt="" loading="lazy"></p>
<p class="p"><span style="font-size: 14pt"> 回到Docker可以都看到已经下载好的镜像全部都显示了,并且都在运行。</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330182802913-2039698699.png" alt="" loading="lazy"></p>
<h2 class="p"><strong>进入</strong><strong>Dify后台</strong></h2>
<p><span style="font-size: 14pt"> 输入http://127.0.0.1/会自动打开Dify的页面,有人会遇到这个Internal Server Error报错,这是因为镜像下载来后,有部分镜像还在启动中或未启动,这时候将所有镜像重启一次才可以。</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330183135305-1264248093.png" alt="" loading="lazy"></p>
<p class="p"><span style="font-size: 14pt"> 重启所有镜像</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202504/1602588-20250404090917028-1090749764.png" alt="" loading="lazy"></p>
<h2 class="p">创建管理员用户</h2>
<p class="p"><span style="font-size: 14pt"> 重新进入Dify管理后台,首次进入需创建管理员用户。</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330183644939-679029788.png" alt="" loading="lazy"></p>
<p><span style="font-size: 14pt"> 创建管理员用户后,将进入登录界面。</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330183901350-872692671.png" alt="" loading="lazy"></p>
<p><span style="font-size: 14pt"> 登录成功</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330183930084-1234576669.png" alt="" loading="lazy"></p>
<h2>添加AI模型</h2>
<p><span style="font-size: 14pt"> 点击右上角头像-设置</span></p>
<p><span style="font-size: 14pt">成员这里可以创建企业内成员进行登录使用。</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330184037018-527943701.png" alt="" loading="lazy"></p>
<p><span style="font-size: 14pt"> 选择模型供应商</span></p>
<p><span style="color: rgba(51, 102, 255, 1)"><span style="font-size: 14pt"> 这里我本地已经安装部署好了Ollama和Deepseek R1和BGE-M3模型,如果没有部署好的请看我这篇文章</span><strong><span style="font-size: 14pt">:<span style="color: rgba(255, 51, 153, 1)"><span style="color: rgba(255, 51, 153, 1)">本地电脑部署DeepSeek 大模型AI</span></span></span></strong></span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330184150155-1302076985.png" alt="" loading="lazy"></p>
<p class="p"><span style="font-size: 14pt"> 由于我本地已经安装好了Ollama,所以就找到Ollama,点击安装插件,其他供应商选择对应安装。下载可能稍慢,请耐心等待。</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330184232698-1881878787.png" alt="" loading="lazy"></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330184917782-1627909194.png" alt="" loading="lazy"></p>
<p><span style="font-size: 14pt"> 添加模型时,若不知模型名称,可在CMD中输入Ollama list查看本地模型名称并复制。</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202504/1602588-20250404091930541-1732830.png" alt="" loading="lazy"></p>
<p class="p"><span style="font-size: 14pt">模型类型:</span></p>
<p><span style="font-size: 14pt">推理模型 → LLM</span><br><span style="font-size: 14pt">嵌入模型 → Text Embedding</span></p>
<p class="p"><span style="font-size: 14pt">模型名称就把刚刚复制下来的粘贴上去就可以了。</span></p>
<p><span style="font-size: 14pt">这里IP地址要注意了,由于我没有用Docker容器里部署Ollama,而是在本地电脑安装的Ollama,这里对IP就要进行特殊处理下了,需要改为:http://host.docker.internal:11434。</span></p>
<p><span style="font-size: 14pt">网络通信原理:</span><br><span style="font-size: 14pt">host.docker.internal为Docker内置域名解析,实现容器与宿主机服务的桥接</span><span style="font-size: 14pt">。简单说就是Docker自己和我们电脑主机网络做了一个映射关系。</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202504/1602588-20250404092817504-811677401.png" alt="" loading="lazy"></p>
<p><span style="font-size: 18px"> 模型添加完成</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330190803684-1139054938.png" alt="" loading="lazy"></p>
<h2>创建应用</h2>
<p><span style="font-size: 14pt"> 其实我也不太会使用,就简单粗糙的做个示范吧,要深入研究需要找下资料学习下。</span></p>
<p><span style="font-size: 14pt">这里我选择创建聊天助手(每个不同应用的作用不一样,选择与自己相符的就行)</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330190921045-2086854965.png" alt="" loading="lazy"></p>
<p><span style="font-size: 14pt"> 添加一些提示词、变量、知识库、模型,设置好后在右边可以调试预览效果,调试完成后就可以发布应用了。</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330190955436-1344263217.png" alt="" loading="lazy"></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330194738366-454893937.png" alt="" loading="lazy"></p>
<p><span style="font-size: 14pt"> 这里提一句,由于我自己的电脑资源很一般,所以每次一提问的时候资源就占比很高,不过等AI思考完毕后资源占用会下降。</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330191110963-162626929.png" alt="" loading="lazy"></p>
<p><span style="font-size: 14pt"> 测试结果,虽然回答是错误的。</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330194412275-1184260589.png" alt="" loading="lazy"></p>
<h1>知识库测试</h1>
<p><span style="font-size: 14pt"> 我这里测试了下知识库检索,上传了6个本地文档。</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330202432895-663819505.png" alt="" loading="lazy"></p>
<p><span style="font-size: 14pt"> 然后我简单的定义了提示词后,对模型提出问题:结合知识库帮我找出住在向XXX街道人员的电话和姓名。</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202504/1602588-20250416013235209-1454472107.png" alt="" loading="lazy"></p>
<p> </p>
<p> </p>
<p><span style="font-size: 14pt"> 然后真的回答对了,全体起立!</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202504/1602588-20250404163810333-80765752.gif" alt="" loading="lazy"></p>
<p><span style="font-size: 14pt"> 这是源文件里的内容。(虚拟信息,如有雷同纯属巧合)</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202504/1602588-20250416013214700-796546347.png" alt="" loading="lazy"></p>
<p> </p>
<h1>WSL资源控制</h1>
<p><span style="font-size: 14pt"> 由于我是针对个人学习,在学习完后我发现我的电脑内存占比一直居高不下,在任务管理器查到了是一个Vmmem的进程占用,大概也知道应该是虚拟机类的占用。</span></p>
<p><span style="font-size: 14pt"> 搜索了下网上资源了解到vmmem是一个由WSL(Windows Subsystem for Linux)创建的虚拟进程,主要用于管理WSL2的内存和CPU资源。当WSL2运行时,Vmmem进程会占用大量的内存和CPU资源,以确保虚拟机的最佳性能。然而,这可能会导致主机系统的其他应用程序运行缓慢或无法正常运行。</span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250331093111986-240491747.png" alt="" loading="lazy"></p>
<h2>关闭WSL服务</h2>
<p><span style="font-size: 14pt"> 所以如果不用的时候可以关闭掉WSL服务。</span></p>
<p><span style="font-size: 14pt">在cmd里输入:</span></p>
<div>
<div>
<div class="cnblogs_code">
<pre><span style="font-family: verdana, geneva; font-size: 16px">wsl --shutdown</span></pre>
</div>
</div>
</div>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330204011175-462533829.png" alt="" loading="lazy"></p>
<p><span style="font-size: 14pt"> 关闭后电脑资源就回到正常状态了。</span></p>
<h2>启动WSL服务</h2>
<p><span style="font-size: 14pt"> 那如果我们后再用的时候就重新启动WSL服务就可以。</span></p>
<p><span style="font-size: 14pt">在cmd输入:</span></p>
<div>
<div>
<div class="cnblogs_code">
<pre><span style="font-family: verdana, geneva; font-size: 16px">wsl</span></pre>
</div>
</div>
</div>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250331102558593-1436021128.png" alt="" loading="lazy"></p>
<h1>最后的最后</h1>
<p><span style="font-size: 14pt"> 关于Dify的作用文中提到的只是冰山一角,它真正的厉害之处是它的工作流,由于博主知识有限,只能教大家部署应用,具体的功能开发使用还要大家自行学习,后续博主也会去学习Dify的相关知识,有机会的话就再开一贴。如有讲的不对的地方,敬请指正。</span></p>
<p><span style="font-size: 14pt">附上Dify的官方操作手册地址:https://docs.dify.ai/zh-hans</span></p>
<p><span style="font-size: 14pt"> 这是我整个学习过程中遇到的问题,最后结合百度和AI最后都完成解决了。</span></p>
<p><span style="font-size: 14pt">总结几个小坑:</span></p>
<p><span style="font-size: 14pt">1、WSL2的安装。</span></p>
<p><span style="font-size: 14pt">2、Docker容器镜像源的设置。</span></p>
<p><span style="font-size: 14pt">3、Dify依赖镜像的拉取。</span></p>
<p><span style="font-size: 14pt">4、Dify添加模型时IP映射设置。</span><img src="https://img2024.cnblogs.com/blog/1602588/202503/1602588-20250330195610705-2134085222.png" alt="" loading="lazy"></p>
<p> <span style="color: rgba(255, 0, 255, 1)"> <span style="color: rgba(51, 102, 255, 1)"><strong><span style="font-size: 18pt">觉得不错的麻烦大家动动发财的小手点下推荐,谢谢!!!</span></strong></span></span></p>
<p><img src="https://img2024.cnblogs.com/blog/1602588/202504/1602588-20250407092750001-530069429.png" alt="" loading="lazy"></p>
<p> </p>
</div>
<div id="MySignature" role="contentinfo">
<p>本文来自博客园,作者:但风偏偏,雨渐渐,转载请注明原文链接:https://www.cnblogs.com/LaiYun/p/18808736 【觉得有帮助的麻烦点下好文要顶和推荐,谢谢!】</p><br><br>
来源:https://www.cnblogs.com/LaiYun/p/18808736
頁:
[1]