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