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…...
达梦:内存相关参数
目录 28个相关参数1. 内存池相关MEMORY_POOLMEMORY_N_POOLSMEMORY_BAK_POOL 2. 大缓冲区相关HUGE_BUFFERHUGE_BUFFER_POOLS 3. 共享缓冲区相关BUFFERBUFFER_POOLSBUFFER_MODEMAX_BUFFER 4. 快速池相关FAST_POOL_PAGES 5. 回收池相关RECYCLE_POOLS 6. 回滚段池相关ROLLSEG_POOLS…...
计算机毕设-基于springboot的融合多源高校画像数据与协同过滤算法的高考择校推荐系统的设计与实现(附源码+lw+ppt+开题报告)
博主介绍:✌多个项目实战经验、多个大型网购商城开发经验、在某机构指导学员上千名、专注于本行业领域✌ 技术范围:Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战…...
《Qt动画编程实战:轻松实现头像旋转效果》
《Qt动画编程实战:轻松实现头像旋转效果》 Qt 提供了丰富的动画框架,可以轻松实现各种平滑的动画效果。其中,旋转动画是一种常见的 UI 交互方式,广泛应用于加载指示器、按钮动画、场景变换等。本篇文章将详细介绍如何使用 Qt 实现…...
SpringBoot3—快速入门
一、简介 (1)前置知识 Java17Spring、SpringMVC、MyBatisMaven、IDEA (2)环境要求 (3)SpringBoot3是什么 核心概念:Spring Boot 底层是 Spring,能简单、快速地创建一个独立的、生…...
【Eureka 缓存机制】
今天简单介绍一下Eureka server 的缓存机制吧✌️✌️✌️ 一、先来个小剧场:服务发现的"拖延症" 想象你是个外卖小哥(客户端),每次接单都要打电话问调度中心(Eureka Server):“现在…...
Python基于机器学习的微博舆情情感分析系统,微博评论情感分析可视化系统(全新升级)
大家好,今天为大家带来的是Python基于机器学习的微博舆情情感分析系统,微博评论情感分析可视化系统,这个系统在原本的系统上进行优化升级。 算法从开源框架的 snlow ,到支持机器学习的 lstm 算法可以手动输入语句,进行…...
Matlab地图绘制教程第2期—水陆填充图
上一期分享了海岸线图的绘制方法: 本着由浅入深的理念,本期再来分享一下水陆填充图的绘制方法。 先来看一下成品效果: 特别提示:Matlab地图绘制教程系列,旨在降低大家使用Matlab进行地图类科研绘图的门槛,…...
云创智城YunCharge 新能源二轮、四轮充电解决方案(云快充、万马爱充、中电联、OCPP1.6J等多个私有单车、汽车充电协议)之新能源充电行业系统说明书
云创智城YunCharge 新能源充电行业系统说明书 ⚡官方文档 ⚡官网地址 1. 引言 随着全球环境保护和能源危机的加剧,新能源汽车行业得到了快速发展,充电基础设施建设也随之蓬勃发展。新能源充电行业系统旨在提供高效、便捷的充电服务,满足电…...
(八)Java-Collection
一、Collection接口 1.特点 Collection实现子类可以存放多个元素,每个元素可以是Object; 有些Collection的实现类,可以存放重复的元素,有些不可以; 有些Collection的实现类,有些是有序的(Li…...
小程序高度问题背景scss
不同的机型,他的比例啥的都会不一样,同样的rpx也会有不同的效果。所以这里选择了取消高度。 <view class"box-border" :style"{padding-top: ${navHeight}px,}"><!-- 已登录 --><view v-if"userStore.userInfo&…...
HTML 日常开发常用标签
文章目录 HTML 日常开发常用标签1、基本结构标签2、内容标签3、多媒体标签4、表单标签5、列表和定义标签6、表格标签7、链接和图像8、元数据9、语义化标签(HTML5新增)10、框架和内联11、交互12、过时或不推荐使用的标签 HTML 日常开发常用标签 1、基本结…...
vue3表单验证的时候访问接口如果有值就通过否则不通过.主动去触发校验
页面有个身份证号码的校验。校验完身份证格式是否符合之后还要去访问接口查询这个用户是否存在。如果存在才通过验证。否则就校验不通过 <el-form ref"ruleFormRef" :model"form" label-width"140px" label-position"right" label…...
Cuppa CMS v1.0 任意文件读取(CVE-2022-25401)
漏洞简介: Cuppa CMS v1.0 administrator/templates/default/html/windows/right.php文件存在任意文件读取漏洞 漏洞环境: 春秋云镜中的漏洞靶标,CVE编号为CVE-2022-25401 漏洞复现 弱口令行不通 直接访问administrator/templates/defau…...
C# Dictionary 使用指南
C# Dictionary 使用指南 1. 简介 Dictionary<TKey, TValue> 是 C# 中一个非常常用的泛型集合类,用于存储键值对(Key-Value Pair)。它可以根据键快速查找对应的值,因此在需要快速查找和检索数据的场景下非常高效。 2. 基本…...
基于Spark的电商供应链系统的设计与实现
目录 1.研究背景与意义 2、国内外研究现状 3、相关理论与技术 (一)分布式计算系统Spark (二)数据仓库Hive (三)读取服务器本地磁盘的日志数据Flume (四)分布式消息队列Kafka …...
MYSQL数据备份与恢复(mysqldump)
MySQL备份之mysqldump 表级别备份还原 格式:mysqldump [OPTIONS] database [tables] 实例:把db_user数据库中的tb_student数据表进行备份 备份:#mysqldump db_user tb_student > /tmp/sqlbak/tb_student.sql -p 还原:#mysql 数…...
从零开始用react + tailwindcs + express + mongodb实现一个聊天程序(二)
1.安装mogondb数据库 参考MongoDB安装配置教程(详细版)_mongodb安装详细步骤-CSDN博客 安装mondbcompass数据库连接工具 参考https://www.mongodb.com/zh-cn/docs/compass/current/connect/ 2.后端服务 1.创建src文件夹 并在src文件夹下创建 index…...
server.servlet.session.timeout: 12h(HTTP 会话的超时时间为 12 小时)
从你提供的配置文件(应该是 Spring Boot 的 application.yml 或 application.properties 文件)来看,以下部分与会话超时时间相关: server:servlet:session:timeout: 12h # timeout: 30cookie:name: VENDER_SID会话超时时间的…...
MySQL--聚集索引、辅助索引、回表查询和覆盖索引的原理
在MySQL中,索引是提高查询性能的核心工具。理解聚集索引、辅助索引、回表查询和覆盖索引的原理,对于优化数据性能至关重要。以下是对这些概念的详细解释以及优化方法。 一、聚集索引(Clustered Index) 聚集索引决定了表中数据的…...
使用vscode导出Markdown的PDF无法显示数学公式的问题
我的硬件环境是M2的MacBook air,在vscode中使用了Markdown PDF来导出md文件对应的PDF。但不管导出html还是PDF文件,数学公式都是显示的源代码。 我看了许多教程,给的是这个方法:在md文件对应的html文件中加上以下代码:…...
从“记住我”到 Web 认证:Cookie、JWT 和 Session 的故事
文章目录 1. 初识 HTTP:一场没有记忆的对话2. Cookie:网站的“记忆” 🍪3. Session:服务端的“记忆” 🎯4. JWT:让用户自己带着“身份证” 🔑5. Cookie vs Session vs JWT 总结 📊6.…...
Idea编译项目很久之后,提示 Error:java:OutOfMemoryError:insufficient memory
项目挺老的的了,平常项目启动,也要挺久的,但是最起码能启动成功,今天下午的时候,项目启动了十几分,一直在转圈,后面控制台输出了这一行异常 Error:java:OutOfMemoryError:insufficient memory …...
wordpress使用CorePress主题设置项总结
宝塔面板设置 软件商店中安装的软件有:(宝塔网站加速3.1)(Nginx 1.18.0)(MySql 5.6.50)(PHP-5.6)(phpMyAdmin 4.4)(Python项目管理器 …...
HTTP非流式请求 vs HTTP流式请求
文章目录 HTTP 非流式请求 vs 流式请求一、核心区别 服务端代码示例(Node.js/Express)非流式请求处理流式请求处理 客户端请求示例非流式请求(浏览器fetch)流式请求处理(浏览器fetch) Python客户端示例&…...
LSTM长短期记忆网络-原理分析
1 简介 概念 LSTM(Long Short-Term Memory)也称为长短期记忆网络,是一种改进的循环神经网络(RNN),专门设计用于解决传统RNN的梯度消失问题和长程依赖问题。LSTM通过引入门机制和细胞状态,能够更…...
IP------PPP协议
这只是IP的其中一块内容PPP,IP还有更多内容可以查看IP专栏,前一章内容为网络类型,可通过以下路径查看IP---网络类型-CSDN博客,欢迎指正 3.PPP协议 1.PPP优点 网络类型:p2p PPP---点到点协议 兼容性会更强凡是接口或…...
Java 实现快速排序算法:一条快速通道,分而治之
大家好,今天我们来聊聊快速排序(QuickSort)算法,这个经典的排序算法被广泛应用于各种需要高效排序的场景。作为一种分治法(Divide and Conquer)算法,快速排序的效率在平均情况下非常高ÿ…...
JWT+redis实现令牌刷新优化方案
令牌刷新优化方案的详细实现步骤: 1. 令牌服务层改造 1.1 JWT工具类增强 // JwtUtils.java 新增方法 public class JwtUtils {// 生成带动态过期时间的令牌public static String createToken(String subject, String userId, String username, long expirationMi…...
基于 C++ Qt 的 Fluent Design 组件库 QFluentWidgets
简介 QFluentWidgets 是一个基于 Qt 的 Fluent Designer 组件库,内置超过 150 个开箱即用的 Fluent Designer 组件,支持亮暗主题无缝切换和自定义主题色。 编译示例 以 Qt5 为例(Qt6 也支持),将 libQFluentWidgets.d…...
