当前位置: 首页 > news >正文

dify离线安装

背景:此篇由大模型离线部署docker(推荐)拆分而来

  • dify使用文档(官方)
  • dify社区版源码(github)

dify的离线安装

  • 离线安装dify插件(对症)

    • dify plugin 离线打包工具github源码地址
  • 有个前提在联网状态将需要的插件进行安装,避免环境依赖问题,安装后将docker-plugin-deamon提交并重新打成镜像使用

    • windows上使用docker启动dify时会遇到80端口限制权限问题。需要修改docker目录下.env文件中EXPOSE_NGINX_PORT和NGINX_PORT端口号为18080不是1024以下端口即可,这两个变量会用于docker-compose.yaml中
    • 打包镜像
# 下面这几步适用于升级也可以修复
# 1. 将容器docker-plugin_daemon容器创建为镜像langgenius/dify-plugin-daemon:0.0.6-local-15
docker commit docker-plugin_daemon-1 langgenius/dify-plugin-daemon:0.0.6-local-15
# 2.移除现有容器内容
docker compose down 
# 3.创建新镜像的引用。这样在docker-compose时可以找到新的镜像,就无需修改镜像名了,只需要创建一个引用名称与原镜像名称即可。执行此步骤前记得删除原镜像docker rmi <镜像id>
docker tag langgenius/dify-plugin-daemon:0.0.6-local-15 langgenius/dify-plugin-daemon:0.0.6-local
# 4. 启动
docker compose up -d
  • 已经将需要的镜像上传到了服务器。
    在这里插入图片描述在这里插入图片描述
  • 安装步骤
  • 指南

# 涉及docker安装及操作均为root dify可以通过普通用户操作 需要加入docker组
#docker安装
1. 解压并安装
tar xzvf docker-24.0.7.tgz
sudo cp docker/* /usr/bin/2. 配置 Docker 服务# 创建 systemd 服务
sudo tee /etc/systemd/system/docker.service <<EOF
[Unit]
Description=Docker Application Container Engine
After=network.target[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP \$MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process[Install]
WantedBy=multi-user.target
EOF3. 启动 Docker
sudo systemctl enable docker
sudo systemctl start docker
4. 验证安装
docker --version#docker-compose安装
cp docker-compose-linux-x86_64  /usr/local/bin/docker-compose
# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker-compose --version# 手动创建 docker 组
sudo groupadd docker
授权devuser加入docker组
sudo usermod -aG docker devuser# 以下的tar都是在本地dify源码目录docker文件夹中使用docker-compose -f docker-compose.yaml -f docker-compose.middleware.yaml up -d 执行安装后进行打包生成的(使用docker save命令)
# 在github下载最新版源码使用main分支即可# 离线镜像导入
docker load -i nginx.tar
docker load -i dify-plugin-daemon.tar
docker load -i dify-web.tar
docker load -i dify-api.tar
docker load -i postgres.tar
docker load -i dify-sandbox.tar
docker load -i redis.tar
docker load -i weaviate.tar
docker load -i squid.tar# 或使用脚本导入
for tarfile in *.tar; do docker load -i "$tarfile"; done重启docker
sudo systemctl restart docker修改并替换IP
.env docker-compose.middleware.yaml docker-compose.yaml middleware.env
192.168.100.105 替换为部署服务器IP
# 此处的docker目录在dify源文件中,一定要进入目录后启动应用,否则会报错
加入docker组的用户 上传dify源文件 并进入docker目录启动应用
docker-compose -f docker-compose.yaml -f docker-compose.middleware.yaml up -d 
检查
docker ps登录dify首页
http://ip
首次登录需要注册 记住用户名和密码 
  • 解压tar文件
# 打包
tar -czvf filename.tar.gz C:\My Folder
# 解压缩
tar -xzvf filename.tar.gz
  • 执行
# 批量导入所有镜像
docker load -i dify-api.tar
docker load -i dify-web.tar
docker load -i nginx.tar
docker load -i postgres.tar
docker load -i redis.tar
docker load -i weaviate.tar
docker load -i dify-sandbox.tar
docker load -i dify-plugin-daemon.tar
docker load -i squid.tar# 查看导入的镜像
docker images# 给执行权限(如果需要)
chmod +x docker-compose-linux-x86_64# 直接运行
./docker-compose-linux-x86_64 up -d# 等基础服务正常后,再单独处理 nginx
./docker-compose-linux-x86_64 up -d nginx# 指定启动
./docker-compose-linux-x86_64 -f docker-compose.yml up -d# 直接使用 docker ps 查看,按名称过滤
docker ps --filter "name=$(basename $(pwd))" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"# 查看服务状态(格式化看的更清楚)
./docker-compose-linux-x86_64 ps# 查看日志
./docker-compose-linux-x86_64 logs redis# 查看所有服务的完整日志
./docker-compose-linux-x86_64 logs --tail=20# 停止所有服务,但保留容器和数据
./docker-compose-linux-x86_64 stop# 停止并移除所有容器(但保留数据卷和镜像)
./docker-compose-linux-x86_64 down# 强制快速停止
./docker-compose-linux-x86_64 down --timeout=0# 检查是否所有服务都停止了
./docker-compose-linux-x86_64 pshttp://你的服务器IP# 检查所有容器是否正常运行
docker ps# 检查服务健康状态
curl http://localhost/v1/health
  • 如果使用docker compose 二进制文件直接运行需要知道volumn映射的位置
# 如果有 docker-compose.yml 文件
cat docker-compose.yml | grep -A 10 -B 2 volumes# 或者查看完整的 compose 配置
./docker-compose-linux-x86_64 config
  • 查看特定服务的 volume
# 查看 postgres 的 volume 映射
docker inspect $(./docker-compose-linux-x86_64 ps -q postgres) | grep -A 10 -B 5 Mounts# 或者使用 format
docker inspect $(./docker-compose-linux-x86_64 ps -q postgres) --format='{{range .Mounts}}{{.Source}}:{{.Destination}}{{end}}'
  • 假设你想查看 Dify 项目的 volume 映射
# 1. 首先启动服务(如果还没启动)
./docker-compose-linux-x86_64 up -d# 2. 查看所有服务的 volume 映射
echo "=== 所有服务的 Volume 映射 ==="
./docker-compose-linux-x86_64 ps -q | while read container_id; docontainer_name=$(docker inspect --format='{{.Name}}' $container_id)echo "容器: $container_name"docker inspect --format='{{range .Mounts}}源: {{.Source}} -> 目标: {{.Destination}} (类型: {{.Type}})
{{end}}' $container_idecho "---"
done# 3. 查看创建的 volumes
echo "=== Docker Volumes ==="
docker volume ls | grep $(basename $(pwd))# 4. 查看 compose 配置中的 volume 定义
echo "=== Compose 文件中的 Volume 配置 ==="
./docker-compose-linux-x86_64 config | grep -A 20 volumes
  • 装好后需要从桌面直接访问http://ip即可,会跳转至http://ip/apps页面。
  • 关注点版本号。如果用于测试,本地与生产环境尽可能一致。经测试。1.9版本dify导出的工作流文件也能够在1.5.1版本dify上导入并成功打开。待运行测试
    在这里插入图片描述

配置大模型访问地址

  • 参考此文章(Dify - 配置 vllm 模型)需要去dify市场下载openai-api-comatible

在这里插入图片描述

  • 下载后是后缀为difypkg的文件

在这里插入图片描述

  • 再进行插件安装

在这里插入图片描述

处理无法像插件中添加模型

# 实时跟踪 vLLM 服务器日志
# 查看最近100行并实时跟踪(推荐)
docker logs -ft--tail 50 vllm-server
# 若遇到模型报错,进到后台日志发现网络问题,可以进入docker容器测试
docker exec -it <容器名> /bin/bash
curl http://ip:8000
# 为了测试,docker run时增加了api-key
docker run -itd --gpus all --shm-size=2g -p 8000:8000 -v /data/soft/model/deepseek/deepseekR1-14B:/app/models/deepseek-14b --name vllm-server vllm-custom python3 -m vllm.entrypoints.openai.api_server --model /app/models/deepseek-14b --served-model-name deepseek-14b --tensor-parallel-size 2 --gpu-memory-utilization 0.9 --max-model-len 32000 --api-key sk-test-123
# 增加了api-key部署vllm后,这样测试
curl -H"Authorization: Bearer sk-test-123" http://<可达地址>:8000/v1/models
# 停止并卸载指定容器
docker-compose down service-name
http://www.dtcms.com/a/431525.html

相关文章:

  • 【完整源码+数据集+部署教程】 运动员动作分割系统: yolov8-seg-GFPN
  • 在线教育网站开发实例电商设计是什么意思
  • 潮州网站建设公司网站欣赏与创建网页
  • 27.渗透-.Linux基础命令(十九)-Linux系统状态管理(安全加固-禁止whell组以外的用户使用su root)
  • 2008iis7怎么搭建网站手机网上银行
  • AI 超级智能体全栈项目阶段四:学术分析 AI 项目 RAG 落地指南:基于 Spring AI 的本地与阿里云知识库实践
  • 南山商城网站建设多少钱广告设计与制作是做什么的
  • React18学习笔记(四) 路由案例--记账本
  • display ospf lsdb 概念及题目
  • 做爰全过程免费的视网站郑州汉狮做网站的大公司
  • 前端网站大全gps建站步骤
  • python基础语法速通
  • 中国地级市旅游人数、收入数据(2000-2023年)
  • 计算机毕设做网站难吗广州seo托管
  • 高端网站设计如何兼顾美学与转化率?
  • 软件下载网站如何履行安全管理义务确保提供的软件广州冼村为什么有钱
  • 嵌入式开发笔记(1)
  • 泉州 网站建设公司首选北京海淀区的科技有限公司
  • 数字化先期质量策划:论全星APQP系统对传统PLM理念的超越与重塑
  • C++lambda函数
  • 第 5 天:C 语言运算符与表达式 —— 数据处理的工具集
  • [深度学习] 大模型学习5-高效微调框架Unsloth使用指北
  • 家教网站代理做彩票网站是违法的吗
  • 南康网站建设wplms wordpress
  • 专注网站建设16年网站多级栏目
  • 四川建设厅电子证书官方网站我想做卖鱼苗网站怎样做
  • 所有字符的ASCII码值(0-127,按照序号、字符、描述、十进制、十六进制列表显示)(完整版)
  • 门控融合机制
  • 做本地的分类信息网站网络营销的特点是什么
  • grep 命令