Dify在Ubuntu20.04系统的部署
文章目录
- 一、dify 介绍
- 1.核心功能优势
- 2.应用场景
- 二、dify 安装(docker方式)
- 1.代码库下载
- 2.配置文件修改
- 3.启动docker 容器
- 三、遇到问题与解决
- 1.使用`sudo docker compose up -d`报错
- 2.使用`service docker start`报错
一、dify 介绍
Dify 是一款开源的大语言模型(LLM)智能体开发平台,可以用于快速搭建个性化或具备商业价值的智能体。
1.核心功能优势
(1)丰富的功能组件
AI 工作流:通过可视化画布构建和测试强大的 AI 工作流
RAG 管道:支持从文档摄入到检索的完整流程,可从 PDF、PPT 等常见格式中提取文本
Agent 智能体:基于 LLM 的推理能力,可以自主规划任务、调用工具,完成复杂任务
模型管理:支持数百种专有和开源的 LLM,如GPT、 Deepseek r1、Llama3 等,并提供模型性能比较功能
(2)工具集成
Dify 提供了 50 多种内置工具(如谷歌搜索、DALL·E、Stable Diffusion 等),并允许自定义模型接入
2.应用场景
智能客服与对话助手:通过自然语言处理技术快速响应用户咨询,支持上下文记忆和多轮对话设计。
内容生成与文档处理:自动生成文章、摘要、代码,或解析长文档进行结构化提取。
商业智能与数据分析:结合企业数据库,生成数据报告或提供决策建议。
二、dify 安装(docker方式)
1.代码库下载
git clone https://github.com/langgenius/dify
下载后目录如下所示
drwxrwxr-x 11 allyoung allyoung 4096 Feb 24 03:33 ./
drwxrwxr-x 10 allyoung allyoung 4096 Feb 24 03:32 ../
drwxrwxr-x 22 allyoung allyoung 4096 Feb 24 03:33 api/
-rw-rw-r-- 1 allyoung allyoung 56 Feb 24 03:33 AUTHORS
-rw-rw-r-- 1 allyoung allyoung 9301 Feb 24 03:33 CONTRIBUTING_CN.md
-rw-rw-r-- 1 allyoung allyoung 12656 Feb 24 03:33 CONTRIBUTING_JA.md
-rw-rw-r-- 1 allyoung allyoung 9948 Feb 24 03:33 CONTRIBUTING.md
-rw-rw-r-- 1 allyoung allyoung 12341 Feb 24 03:33 CONTRIBUTING_VI.md
drwxrwxr-x 3 allyoung allyoung 4096 Feb 24 03:33 dev/
drwxrwxr-x 2 allyoung allyoung 4096 Feb 24 03:33 .devcontainer/
drwxrwxr-x 10 allyoung allyoung 4096 Feb 24 03:33 docker/
drwxrwxr-x 8 allyoung allyoung 4096 Feb 24 03:33 .git/
-rw-rw-r-- 1 allyoung allyoung 338 Feb 24 03:33 .gitattributes
drwxrwxr-x 7 allyoung allyoung 4096 Feb 24 03:33 .github/
-rw-rw-r-- 1 allyoung allyoung 3279 Feb 24 03:33 .gitignore
drwxrwxr-x 2 allyoung allyoung 4096 Feb 24 03:33 images/
-rw-rw-r-- 1 allyoung allyoung 2400 Feb 24 03:33 LICENSE
-rw-rw-r-- 1 allyoung allyoung 1304 Feb 24 03:33 Makefile
-rw-rw-r-- 1 allyoung allyoung 16631 Feb 24 03:33 README_AR.md
-rw-rw-r-- 1 allyoung allyoung 13488 Feb 24 03:33 README_CN.md
-rw-rw-r-- 1 allyoung allyoung 15162 Feb 24 03:33 README_ES.md
-rw-rw-r-- 1 allyoung allyoung 15345 Feb 24 03:33 README_FR.md
-rw-rw-r-- 1 allyoung allyoung 14846 Feb 24 03:33 README_JA.md
-rw-rw-r-- 1 allyoung allyoung 13519 Feb 24 03:33 README_KL.md
-rw-rw-r-- 1 allyoung allyoung 14279 Feb 24 03:33 README_KR.md
-rw-rw-r-- 1 allyoung allyoung 13736 Feb 24 03:33 README.md
-rw-rw-r-- 1 allyoung allyoung 14433 Feb 24 03:33 README_PT.md
-rw-rw-r-- 1 allyoung allyoung 13615 Feb 24 03:33 README_SI.md
-rw-rw-r-- 1 allyoung allyoung 14392 Feb 24 03:33 README_TR.md
-rw-rw-r-- 1 allyoung allyoung 15423 Feb 24 03:33 README_VI.md
drwxrwxr-x 5 allyoung allyoung 4096 Feb 24 03:33 sdks/
drwxrwxr-x 20 allyoung allyoung 4096 Feb 24 03:33 web/
2.配置文件修改
进入代码库下载目录dify
中的docker
目录
cd ./dify/docker
将.env.example
改名为.env
cp .env.example .env
3.启动docker 容器
通过 $ docker compose version
命令检查版本,根据你系统上的 Docker Compose 版本,选择合适的命令来启动容器。
示例如下
$ docker compose version
Docker Compose version v2.20.3
本机Docker Compose 版本为v2,使用以下命令:
sudo docker compose up -d #Docker Compose 是 Docker 官方提供的一个工具,用于定义和运行多容器的 Docker 应用程序。借助一个 YAML 文件(通常命名为 `docker-compose.yml`),你可以对应用程序的服务、网络、卷等配置进行定义,然后使用 Docker Compose 命令一键式地启动、停止和管理整个应用程序。
这里如果版本是 Docker Compose V1,使用以下命令:
sudo docker-compose up -d
运行命令后,你应该会看到类似以下的输出,显示所有容器的状态和端口映射:
[+] Running 11/11✔ Network docker_ssrf_proxy_network Created 0.1s ✔ Network docker_default Created 0.0s ✔ Container docker-redis-1 Started 2.4s ✔ Container docker-ssrf_proxy-1 Started 2.8s ✔ Container docker-sandbox-1 Started 2.7s ✔ Container docker-web-1 Started 2.7s ✔ Container docker-weaviate-1 Started 2.4s ✔ Container docker-db-1 Started 2.7s ✔ Container docker-api-1 Started 6.5s ✔ Container docker-worker-1 Started 6.4s ✔ Container docker-nginx-1 Started 7.1s
最后检查是否所有容器都正常运行:
docker compose ps
在这个输出中,你应该可以看到包括 3 个业务服务 api / worker / web
,以及 6 个基础组件 weaviate / db / redis / nginx / ssrf_proxy / sandbox
。
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
docker-api-1 langgenius/dify-api:0.6.13 "/bin/bash /entrypoi…" api About a minute ago Up About a minute 5001/tcp
docker-db-1 postgres:15-alpine "docker-entrypoint.s…" db About a minute ago Up About a minute (healthy) 5432/tcp
docker-nginx-1 nginx:latest "sh -c 'cp /docker-e…" nginx About a minute ago Up About a minute 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp
docker-redis-1 redis:6-alpine "docker-entrypoint.s…" redis About a minute ago Up About a minute (healthy) 6379/tcp
docker-sandbox-1 langgenius/dify-sandbox:0.2.1 "/main" sandbox About a minute ago Up About a minute
docker-ssrf_proxy-1 ubuntu/squid:latest "sh -c 'cp /docker-e…" ssrf_proxy About a minute ago Up About a minute 3128/tcp
docker-weaviate-1 semitechnologies/weaviate:1.19.0 "/bin/weaviate --hos…" weaviate About a minute ago Up About a minute
docker-web-1 langgenius/dify-web:0.6.13 "/bin/sh ./entrypoin…" web About a minute ago Up About a minute 3000/tcp
docker-worker-1 langgenius/dify-api:0.6.13 "/bin/bash /entrypoi…" worker About a minute ago Up About a minute 5001/tcp
然后即可在浏览器上输入http://<your_ip>
进行登陆。效果如下
三、遇到问题与解决
1.使用sudo docker compose up -d
报错
报错日志如下
$ sudo docker compose up -d
[sudo] password for allyoung:
[+] Running 10/10✘ web Error 15.0s ✘ worker Error 15.0s ✘ nginx Error 15.0s ✘ db Error 15.0s ✘ redis Error 15.0s ✘ ssrf_proxy Error 15.0s ✘ plugin_daemon Error 15.0s ✘ api Error 15.0s ✘ sandbox Error 15.0s ✘ weaviate Error 15.0s
Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
原因在于网络超时,无法获取到docker 镜像。
解决:增加docker镜像地址。
sudo vim /etc/docker/daemon.json
在daemon.json
中写入如下内容
{"registry-mirrors": ["https://pull.loridocker.com","https://docker.hlmirror.com","https://dockerpull.cn"]}
注意修改镜像地址后,要重启docker 后生效。命令如下
systemctl daemon-reload
systemctl restart docker
然后重新执行sudo docker compose up -d
即可。
2.使用service docker start
报错
报错日志如下
# service docker start
Failed to start docker.service: Unit docker.service not found.
# docker -v
Docker version 27.2.0, build 3ab4256
原因在于docker 安装不完整。
解决:
curl -sSL https://get.docker.com/ |sh
相关文章:

Dify在Ubuntu20.04系统的部署
文章目录 一、dify 介绍1.核心功能优势2.应用场景 二、dify 安装(docker方式)1.代码库下载2.配置文件修改3.启动docker 容器 三、遇到问题与解决1.使用sudo docker compose up -d报错2.使用service docker start报错 一、dify 介绍 Dify 是一款开源的大语言模型(LL…...
第7天:结构体与联合体 - 复杂数据类型
第7天:结构体与联合体 - 复杂数据类型 一、📚 今日学习目标 🎯 掌握结构体(struct)的定义与使用🔧 理解联合体(union)的特性与适用场景💡 完成图书馆管理系统实战&…...

vue富文本 vue-quill-editor + 上传图片到阿里云服务器 + 修改富文本内容
前言 使用富文本编辑器,需要将图片上传到服务器,完成之后,还需要在修改页面完成修改富文本内容,使用的富文本插件是vue-quill-editor, 一 、安装 vue-quill-editor npm i vue-quill-editor npm install quill --save npm inst…...
Java常见设计模式(中):结构型模式
🌈 引言:设计模式就像乐高积木 适配器:让不同形状的积木完美拼接装饰器:给积木添加炫酷灯光效果代理:遥控积木完成复杂动作组合:将小积木搭建成宏伟城堡 结构型模式 主要用于描述对象之间的关系ÿ…...

DeepSeek R1 + 飞书机器人实现AI智能助手
效果 TFChat项目地址 https://github.com/fish2018/TFChat 腾讯大模型知识引擎用的是DeepSeek R1,项目为sanic和redis实现,利用httpx异步处理流式响应,同时使用buffer来避免频繁调用飞书接口更新卡片的网络耗时。为了进一步减少网络IO消耗&…...

【论文详解】Transformer 论文《Attention Is All You Need》能够并行计算的原因
文章目录 前言一、传统 RNN/CNN 存在的串行计算问题二、Transformer 如何实现并行计算?三、Transformer 的 Encoder 和 Decoder 如何并行四、结论 前言 亲爱的家人们,创作很不容易,若对您有帮助的话,请点赞收藏加关注哦ÿ…...

51c嵌入式~电路~合集12
我自己的原文哦~ https://blog.51cto.com/whaosoft/12318429 一、单端、推挽、桥式拓扑结构变压器对比 单端正激式 单端:通过一只开关器件单向驱动脉冲变压器。 正激:脉冲变压器的原/付边相位关系,确保在开关管导通,驱动脉冲…...
php 获取head参数
php 获取head参数 在PHP中,获取HTTP头部(head)参数可以通过不同的方式实现,下面为你详细介绍几种常见的方法。 1. 使用$_SERVER超全局变量 $_SERVER 是PHP中的一个超全局变量,它包含了诸如头信息、路径、脚本位置等…...
蓝桥杯嵌入式备赛
前言 嘿,小伙伴们!备战蓝桥杯嵌入式比赛的号角已经吹响啦!如果你还在为如何入手STM32G431RB这块比赛板子而发愁,别担心,今天我就来给你全方位介绍这块板子,带你快速上手备赛,一起冲向蓝桥杯的赛…...
基于PyTorch实现的自适应注意力卷积网络(AACN)详解
目录 基于PyTorch实现的自适应注意力卷积网络(AACN)详解1. 引言2. 网络结构设计2.1 输入层2.2 初始特征提取层2.3 自适应注意力卷积块(AACB)2.4 下采样与高层特征提取层2.5 全局特征汇聚层2.6 输出层3. 模型优化策略4. 数据集介绍5. PyTorch实现代码详解5.1 完整代码实现5.…...
基于Javase的停车场收费管理系统
基于Javase的停车场收费管理系统 停车场管理系统开发文档 项目概述 1.1 项目背景 随着现代化城市的不断发展,车辆数量不断增加,停车难问题也日益突出。为了更好地管理停车场资 源,提升停车效率,需要一个基于Java SE的停车场管理…...
Cookie与Session:Web开发中的状态管理机制
引言 在Web开发中,HTTP协议是无状态的,这意味着服务器默认不会记住客户端的任何信息。然而,许多应用场景(如用户登录、购物车等)需要服务器能够识别客户端并保持状态。为了解决这个问题,开发者引入了 Cook…...

python量化交易——金融数据管理最佳实践——qteasy创建本地数据源
文章目录 qteasy金融历史数据管理总体介绍本地数据源——DataSource对象默认数据源查看数据表查看数据源的整体信息最重要的数据表其他的数据表 从数据表中获取数据向数据表中添加数据删除数据表 —— 请尽量小心,删除后无法恢复!!总结 qteas…...

手机放兜里,支付宝“碰一下”被盗刷?
大家好,我是小悟。 近期,网络上关于“支付宝‘碰一下’支付易被盗刷”的传言甚嚣尘上,不少用户对此心生疑虑。 首先,要明确一点:“碰一下”支付并不会像某些传言中所描述的那样容易被隔空盗刷。这一观点已经得到了支付…...

C/C++语言知识点一
目录 1. 请对这段代码进行解释:char *const *(*next)( ); 2. 函数指针数组:解释这个表达式char *(*c[10])(int **p); 3. 字符串常量:分析下面这段代码。 4. 访问指定内存地址 5. typedef 和 define 的区别 6. 函数返回局部变量地址问…...
前端面试题---在vue中为什么要用路由
在vue中为什么要用路由, 毕竟a标签可以直接跳转页面 在 Vue 中使用 Vue Router 的主要原因是提高 单页面应用(SPA) 的用户体验和性能。 相比传统的 <a> 标签跳转,Vue Router 提供了以下优势: 避免页面刷新: V…...

Three.js 快速入门教程【十】常见的纹理类型
系列文章目录 Three.js 快速入门教程【一】开启你的 3D Web 开发之旅 Three.js 快速入门教程【二】透视投影相机 Three.js 快速入门教程【三】渲染器 Three.js 快速入门教程【四】三维坐标系 Three.js 快速入门教程【五】动画渲染循环 Three.js 快速入门教程【六】相机控件 Or…...
文档识别-C#中英文文档识别接口-PDF文件内容识别API
文档识别接口可满足用户在数字化转型过程中对文档处理的高效、准确需求。翔云文档识别接口以成熟的文字识别技术、自然语言处理技术、图像识别技术为核心,能够将文档上的非可编辑文本转化为可编辑的数据,从而提升信息处理的速度与实现文档数字化管理的准…...
gRPG协议
gRPG协议是一种用于游戏开发的网络通信协议,全称为Game Real-time Protocol。它主要用于实现实时多人游戏中的数据传输和同步。gRPG协议的设计目标是提供低延迟、高可靠性的数据传输,以支持游戏中的实时互动和状态同步。 gRPG协议的特点 低延迟&#x…...

【maven打包错误】 无效的目标发行版:16
maven打包错误 错误截图 About 故事在一个风和日丽的下午,我一如往常的摸鱼,突如其来的事情打乱我的摸鱼节奏,“为什么测试不能用了” ,随着前端帅哥一声轻咦,故事便开始了,我检查发现是是磁盘满了&#x…...

7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...