Docker Docker-compose快速搭建dify大语言模型LLM应用开发平台

dify是什么

Dify
是一个开源的大语言模型(LLM)应用开发平台,旨在简化和加速生成式AI应用的创建和部署。Dify结合了后端即服务(Backend as Service, BaaS)和LLMOps的理念,为开发者提供了一个用户友好的界面和一系列强大的工具,使他们能够快速搭建生产级的AI应用‌。

主要功能和特点
低代码/无代码开发:Dify通过可视化的方式允许开发者轻松定义Prompt、上下文和插件等,无需深入底层技术细节。
模块化设计:Dify采用模块化的设计,每个模块都有清晰的功能和接口,开发者可以根据需求选择性地使用这些模块来构建自己的AI应用。
丰富的功能组件:平台提供了包括AI工作流、RAG管道、Agent、模型管理等丰富功能组件,帮助开发者从原型到生产的全过程。
支持多种大语言模型:Dify已支持主流的模型,如Claude3、OpenAI等,开发者能够根据自己的需求选择最适合的模型来构建AI应用。
应用场景
‌聊天助手:基于LLM的对话助手,能够与用户进行自然语言交互,理解用户的问题、请求或指令,并给出相应的回答或执行相应的操作。
文本生成:专注于各种文本生成任务,如撰写故事、新闻报道、文案、诗歌等创意写作,以及文本分类、翻译等任务‌。
智能代理:具备对话能力和任务分解、推理、工具调用等高级能力,能够理解复杂的指令,将任务分解为多个子任务,并调用相应的工具或API来完成这些子任务。
工作流程:根据用户定义的流程编排,灵活地组织和控制LLM的工作流程。

官方网站: https://cloud.dify.ai/apps
官方文档:https://docs.dify.ai/zh-hans
官方github: https://github.com/langgenius/dify
官方体验:https://cloud.dify.ai/apps

注意访问需要科学上网 ,请自行解决

也可尝试使用手机流量开热点链接,此方法不保证完全可行

dify搭建

安装 Dify 之前, 请确保你的机器已满足最低安装要求:

CPU >= 2 Core

RAM >= 4 GiB

克隆 Dify 代码仓库
克隆 Dify 源代码至本地环境。

假设当前最新版本为 0.15.3

1
git clone https://github.com/langgenius/dify.git --branch 0.15.3

启动 Dify
进入 Dify 源代码的 Docker 目录

1
cd dify/docker

复制环境配置文件

1
cp .env.example .env

启动 Docker 容器

根据你系统上的 Docker Compose 版本,选择合适的命令来启动容器。你可以通过 $ docker compose version 命令检查版本,详细说明请参考 Docker 官方文档:

如果版本是 Docker Compose V2,使用以下命令:

1
docker compose up -d

如果版本是 Docker Compose V1,使用以下命令:

1
docker-compose up -d

运行命令后,你应该会看到类似以下的输出,显示所有容器的状态和端口映射:

1
2
3
4
5
6
7
8
9
10
11
12
[+] 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

最后检查是否所有容器都正常运行:

1
docker compose ps

在这个输出中,你应该可以看到包括 3 个业务服务 api / worker / web,以及 6 个基础组件 weaviate / db / redis / nginx / ssrf_proxy / sandbox 。

1
2
3
4
5
6
7
8
9
10
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

通过这些步骤,你应该可以成功在本地安装 Dify。

更新 Dify
进入 dify 源代码的 docker 目录,按顺序执行以下命令:

1
2
3
4
5
cd dify/docker
docker compose down
git pull origin main
docker compose pull
docker compose up -d

Dify 使用

浏览器访问:http://ip:80/

创建账号进行登录,然后,可进行使用
注意第一次创建的管理员账号密码不要忘记
忘记之后,按照官网办法重置密码并不成功

需要删除所有容器,删除docker 目录下的volumes/ 然后重启
相当于重新安装

问题解决

出现问题

1
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

解决办法

https://blog.csdn.net/wufaqidong1/article/details/144476399

1.备份原来的配置文件

1
cp /etc/docker/daemon.json{,.bak}

2.删除或修改daemon.json 文件, 并添加如下配置

1
rm -rf /etc/docker/daemon.json

1
sudo tee /etc/docker/daemon.json<<-'EOF' { "registry-mirrors":[ "https://docker.1ms.run", "https://doublezonline.cloud", "https://dislabaiot.xyz", "https://docker.fxxk.dedyn.io", "https://dockerpull.org", "https://docker.unsee.tech", "https://hub.rat.dev", "https://docker.1panel.live", "https://docker.nastool.de", "https://docker.zhai.cm", "https://docker.5z5f.com", "https://a.ussh.net", "https://docker.udayun.com", "https://hub.geekery.cn" ,"https://docker.1ms.run","https://docker.1panel.live/"] } EOF

重启docker

1
2
sudo systemctl daemon-reload
sudo systemctl restart docker

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

继开 wechat
欢迎加我的微信,共同交流技术