找回密码
 立即注册
首页 业界区 业界 内网环境部署Deepseek+Dify,构建企业私有化AI应用 ...

内网环境部署Deepseek+Dify,构建企业私有化AI应用

殷罗绮 2025-6-1 23:38:08
0.简介

公司为生产安全和保密,内部的服务器不可连接外部网络,为了可以在内网环境下部署,采用的方案为ollama(Docker)+Dify(Docker Compose),方便内网环境下迁移和备份,下文将介绍部署的全部过程。
1.镜像拉取

镜像拉取为准备工作,因服务器在内网环境,需要先在可以连接外网的电脑上拉取相关镜像或文件。由于公司笔记本的Windows系统屏蔽了Microsoft Store,导致Docker Desktop安装不成功,故使用虚拟机创建Ubuntu系统,在Ubuntu下进行相关操作。
1.1 ollama

ollama采用docker进行部署,首先拉取ollama docker镜像
  1. docker pull ollama/ollama
复制代码
通过以下命令可以创建容器
  1. docker run -d --name ollama -v /home/LLM/ollama/models:/usr/share/ollama/.ollama/models -p 11434:11434 ollama/ollama:latest
复制代码
可以根据实际情况更改配置:

  • --name:容器名
  • -v:硬盘挂载,宿主机路径:容器内部路径
  • -p:端口映射,宿主机端口:容器内端口
在Linux非root用户下,ollama模型默认保存位置为/usr/share/ollama/.ollama/models
root用户默认存储在/root/.ollama/models,docker容器默认使用root用户
Tips:-v参数建议不要更改为root用户路径,和模型导入有关,在后文会提到
模型拉取需要进入容器内进行操作
在启动ollama的容器后,通过以下命令查看ollama容器的信息
  1. docker ps | grep ollama
复制代码
根据容器ID来进入容器内部
  1. docker exec -it 容器ID /bin/bash
复制代码
模型可以在ollama官网查看
1.png

以Deepseek为例,选择14b参数量的模型后,复制右侧的命令到ollama,即可拉取模型并运行
  1. # 拉取模型并运行
  2. ollama run deepseek-r1:14b
  3. # 仅拉取模型
  4. ollama pull deepseek-r1:14b
复制代码
运行后可以在终端中进行对话测试
已有的模型可以通过 ollama list 命令来查看,模型文件的保存位置可以通过以下命令查看
  1. ollama show deepseek-r1:14b --modelfile
复制代码
输出结果的第一行就是模型文件的存储位置。至此,ollama相关的镜像文件全部下载完毕。
1.2 Dify

Dify社区版支持多种部署方式,我们选择使用Docker Compose方式来部署
按照官方文档进行操作,首先克隆Dify的源代码到本地环境
  1. # 假设当前最新版本为 0.15.3
  2. git clone https://github.com/langgenius/dify.git --branch 0.15.3
复制代码
注意:在2025.3.3时,最新版为1.0.0版本,该版本将模型提供商和工具分离为插件,不自带ollama等模型提供商,并且安装插件时会下载所需的相关Python依赖,内网环境下无法安装成功。
内网环境建议使用0.15.x版本
进入Dify的docker目录并复制环境配置文件
  1. cd dify/docker
  2. cp .env.example .env
复制代码
根据系统上的Docker Compose版本,选择合适的命令来启动容器
  1. # Docker Compose V2
  2. docker compose up -d
  3. # Docker Compose V1
  4. docker-compose up -d
复制代码
使用Docker Compose拉取镜像时会受到镜像源的影响,一旦存在拉取失败,全部镜像都会拉取失败,需要配置多个可用国内镜像源才能成功
或者可以逐个拉取所需要的镜像,0.15.3版本所需的各个镜像为:
REPOSITORYTAGSIZEubuntu/squidlatest243MBpostgres15-alpine273MBlanggenius/dify-web0.15.3436MBlanggenius/dify-api0.15.32.97GBnginxlatest192MBredis6-alpine30.2MBlanggenius/dify-sandbox0.2.10567MBsemitechnologies/weaviate1.19.052.5MB镜像拉取成功后使用 docker compose up -d 命令启动Dify,服务器所使用的Docker没有集成Docker Compose工具,需要手动进行安装。(参考手动安装docker compose - 博客园进行安装,内网服务器选用独立安装的方式离线安装)
Dify默认使用80端口,可以通过.env文件进行修改,部署时可以根据实际情况修改
首次启动需要访问以下地址设置管理员账户:
  1. http://your_server_ip/install
复制代码
访问主页面进入以下地址:
  1. http://your_server_ip
复制代码
如需要停止容器,使用
  1. docker compose down
复制代码
2.镜像导出

2.1 Docker镜像导出

使用以下命令查看本机docker镜像,并根据镜像ID保存对应镜像到本地
  1. docker images
  2. docker save 镜像ID > 文件名.tar
复制代码
将所需要的全部docker镜像都导出(包括ollama和Dify)
Dify导出镜像的同时还需要将上一步操作的Dify/docker文件夹也复制导出,该文件夹会存储Dify的全部配置以及相关数据,为Dify运行的主目录
2.2 模型文件导出

在ollama容器内下载的模型,首先查看模型文件的存储位置
  1. ollama show deepseek-r1:14b --modelfile
复制代码
ollama docker内,模型默认存储在/root/.ollama/models/blobs下,该路径下还存有一些验证文件,一个模型文件+四个验证文件共五个文件
2.png

将这些文件复制到上一步启动时挂载的路径下,这样就可以在宿主机中操作这些文件了,通过cp命令来复制
  1. cp 源文件 目标文件
复制代码
这是我踩的一个坑,参考博客 数据不出内网:基于Ollama+OneAPI构建企业专属DeepSeek智能中台 时,该博客并未提到ollama在首次运行或下载Deepseek模型时会进行验证,在按照博客的步骤导入服务器后ollama运行报错验证失败,也没有查到相关的解决方法,在花费一些时间后才发现还需要迁移这些验证文件,实属不易。
除模型文件外还需要导出一个ModelFile文件,用于后续模型导入,该文件也放入blobs文件夹下
  1. ollama show deepseek-r1:14b --modelfile > Modelfile
复制代码
2.3 传输文件到物理机

VirtualBox创建的虚拟机,可使用自带的共享文件夹功能将保存后的镜像文件传输到物理机中,具体可参考:手把手教你在VirtualBox中与主机共享文件夹_virtualbox共享文件夹在哪-CSDN博客
将全部所需文件传输到物理机,再通过物理机传输到内网服务器中。
3.镜像导入及启动

将镜像传输到服务器后,进行导入
  1. docker load -i 文件名.tar
复制代码
通过该命令导入镜像后,会丢失镜像的标签信息,需要再手动添加标签信息
  1. docker tag 镜像ID 镜像名:版本
  2. # 以 Ubuntu/squid 为例
  3. docker tag 镜像ID ubuntu/squid:latest
复制代码
3.1 ollama

在服务器上创建ollama docker容器
  1. docker run -d --name ollama -v /home/LLM/ollama/models:/usr/share/ollama/.ollama/models -p 11434:11434 ollama/ollama:latest
复制代码
容器创建成功后访问 http://your_server_ip:11434 可以看到Ollama is running的消息提示
/home/LLM/ollama/models目录为自定义的服务器存储模型文件的路径,这个路径要挂载到容器上,以便容器内部进行访问
将模型文件夹blobs存储到你设置的这个目录下,进入ollama容器内部
  1. docker ps | grep ollama
  2. docker exec -it ollama容器ID /bin/bash
复制代码
在容器内切换到挂载的路径/usr/share/ollama/.ollama/models/blobs
打开之前导出的ModelFile文件,修改第一行的路径,指向挂载的路径
  1. FROM /usr/share/ollama/.ollama/models/blobs/sha256-6e9f90f02bb3b39b59e81916e8cfce9deb45aeaeb9a54a5be4414486b907dc1e
复制代码
使用以下命令导入模型
  1. ollama create 模型名 -f Modelfile文件路径
复制代码
导入成功会返回成功的提示,使用create命令导入的模型,会在模型的默认存储位置/root/.ollama/models重新生成模型文件和验证文件(由于不清楚ollama能否直接读取这些文件,所以前文不推荐将容器的挂载路径指向/root/.ollama/models,而是选择读取和create导入,大家可以自行测试)
chat模型可以通过run命令运行测试
  1. ollama run deepseek-r1:14b
复制代码
3.2 Dify

将上一步导出的Dify/docker文件夹放置在服务器指定位置,进入该目录后通过Docker Compose工具再次启动即可,若镜像导入无问题,就可以直接启动成功
如果服务器的Docker不包含Docker Compose工具,1.2中已经介绍了离线安装Docker Compose的方法
4.Dify使用

启动完成后即可正常访问Dify,在设置页可以配置ollama,这样就可以配置Deepseek模型了,Dify的使用可以参考官方文档
5.结束语

Deepseek的突然爆火使得AI相关应用再一次迎来了发展,相关的博客或知识还在逐步增加中,这次的部署可参考的不多,且过于杂乱,本文总结了我在部署时遇到的问题,希望可以给大家一些帮助。
参考

数据不出内网:基于Ollama+OneAPI构建企业专属DeepSeek智能中台
Docker - 实现本地镜像的导出、导入(export、import、save、load)
Dify丝滑云或本地docker部署步骤 适用Linux & macOS
欢迎使用 Dify | Dify
docker常用命令大全(详细版),Linux运维开发经验的有效总结
docker load -i 导入后 看不到image镜像_docker load之后,镜像不见了-CSDN博客
linux加载tar文件成镜像找不到问题及解决办法_docker load 后找不到镜像-CSDN博客
手把手教你在VirtualBox中与主机共享文件夹_virtualbox共享文件夹在哪-CSDN博客
使用 Docker 安装 Ollama 部署本地大模型并接入 One-API_docker_程序员羊羊-云原生技术专区
手动安装docker compose - lqqgis - 博客园
Ubuntu 22.04安装Docker-CSDN博客

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册