Docker 快速部署 Dify + 应用构建完整流程
目录
- 一、环境配置
- 1. Linux环境
- 2. Windows环境
- 二、Dify部署
- 1. 代码准备
- 2. 修改环境变量 .env 文件
- 3. 修改 docker-compose.yaml 文件
- 4. 启动Docker容器
- 5. 访问Dify
- 三、Dify应用
- 1. 接入大模型
- 1.1 模型类型
- 1.2 接入模型
- 2. 构建应用
- 2.1 应用类型
- 2.2 构建应用方式
- 2.3 创建面试官助手
- 使用 Docker Compose 快速部署 Dify 1.4.0 版本
一、环境配置
1. Linux环境
# 安装 Docker,Docker 19.03 or later
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl enable --now docker
# 安装 docker-compose,Docker Compose 1.28 or later
curl -L https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
# 验证安装
docker -v
docker-compose -v
# 如失效,自行百度~
2. Windows环境
- 可以选择直接使用 WSL 2 后端在 Windows 中安装 Docker Desktop。
- 也可以直接在 WSL 2 中安装命令行版本的 Docker。
- 建议将源代码和其他数据绑定到 Linux 容器中时,将其存储在 Linux 文件系统中,而不是 Windows 文件系统中。
- 机器要求:CPU >= 2 Core,RAM >= 4 GiB
二、Dify部署
1. 代码准备
# 克隆 Dify 源代码至本地环境,根据需要选择版本
git clone https://github.com/langgenius/dify.git --branch 1.4.0
2. 修改环境变量 .env 文件
# 进入 Dify 源代码的 Docker 目录
cd dify/docker
# 复制环境配置文件
cp .env.example .env
# 修改.env环境配置文件,本次部署使用Milvus向量库,需更改.env文件中的VECTOR_STORE值为milvus
VECTOR_STORE=milvus
# 确保`.env` 文件中的 Milvus 配置
MILVUS_URI=http://host.docker.internal:19530
# docker-compose.yaml文件milvus-standalone 服务中的环境变量配置common.security.authorizationEnabled: ${MILVUS_AUTHORIZATION_ENABLED:-true}表示启用授权功能,需要设置用户名和密码,否则会报错
# 连接用户名,默认为root
MILVUS_USER=root
# 连接密码,默认为Milvus
MILVUS_PASSWORD=Milvus
- 注意,通过指定
VECTOR_STORE=milvus
,Dify 会在 docker 中调出 Milvus Standalone 服务器。即可以通过http://localhost:19530
从 Docker 外部访问服务器,其他 Dify 容器要想在 Docker 环境内与之对话,也需要连接到特殊的 DNS 名称host.docker.internal
。因此,我们将http://host.docker.internal:19530
设置为MILVUS_URI
3. 修改 docker-compose.yaml 文件
- 由于默认镜像地址国内无法访问,需更换业务服务和基础组件的镜像地址
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/langgenius/dify-api:1.4.0
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/langgenius/dify-web:1.4.0
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/postgres:15-alpine
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/redis:6-alpine
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/langgenius/dify-sandbox:0.2.12
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/langgenius/dify-plugin-daemon:0.0.10-local
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/ubuntu/squid:latest
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:latest
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/quay.io/coreos/etcd:v3.5.5
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/minio/minio:RELEASE.2023-03-20T20-16-18Z
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/milvusdb/milvus:v2.5.0-beta
4. 启动Docker容器
# 如果版本是 Docker Compose V2,使用以下命令
docker compose up -d
# 如果版本是 Docker Compose V1,使用以下命令
docker-compose up -d
# 检查是否所有容器都正常运行
docker compose ps
-
根据你系统上的 Docker Compose 版本,选择合适的命令来启动容器。你可以通过
$ docker compose version
命令检查版本 -
所有容器均已启动,包括 3 个业务服务
api / worker / web
,以及 7 个基础组件milvus / milvus-minio/ db / redis / nginx / ssrf_proxy / sandbox
,如下:
-
注意:每次修改编辑
.env
文件中的环境变量值(自定义配置),都需要重启Dify(docker compose down,docker compose up)
5. 访问Dify
- 先前往管理员初始化页面设置管理员账户,管理员拥有的最大权限,可用于创建应用和管理 LLM 供应商等
- 设置完成后可访问 Dify 主页面
# 设置管理员账户
# 本地环境
http://localhost/install
# 服务器环境
http://your_server_ip/install
# 访问Dify
# 本地环境
http://localhost
# 服务器环境
http://your_server_ip
三、Dify应用
1. 接入大模型
1.1 模型类型
- 在 Dify 中,按模型的使用场景将模型分为以下 4 类:
- 系统推理模型(
llm
文本生成模型)。 在创建的应用中,用的是该类型的模型。智聊、对话名称生成、下一步问题建议用的也是推理模型。系统推理模型供应商包括OpenAI、Azure OpenAI Service、Anthropic、Hugging Face Hub、Replicate、Xinference、OpenLLM、讯飞星火、文心一言、通义千问、Minimax、ZHIPU(ChatGLM)等。 - Embedding 模型(
text_embedding
文本 Embedding 模型)。在知识库中,将分段过的文档做 Embedding 用的是该类型的模型。在使用了知识库的应用中,将用户的提问做 Embedding 处理也是用的该类型的模型。已支持的 Embedding 模型供应商包括OpenAI、ZHIPU(ChatGLM)、Jina AI(Jina Embeddings)等。 - Rerank 模型。Rerank 模型用于增强检索能力,改善 LLM 的搜索结果。已支持的 Rerank 模型供应商包括Cohere、Jina AI(Jina Reranker)等。
- speech2text 语音转文字模型。
- tts 文字转语音模型。
moderation
敏感内容审查模型,提供内容审查功能,确保不会输出包含有争议的内容,比如暴力,性和非法行为等内容。
1.2 接入模型
-
在 Dify 的 设置 — 模型供应商 页面内添加并配置所需要的模型,本次接入模型为通义千问(接入自有模型的模型供应商),接入自有模型的供应商后,Dify 会自动接入该供应商下的所有模型。
-
模型配置具体步骤为:进入设置-模型供应商-安装模型供应商(通义千问)-从阿里云百炼获取 API Key-配置API KEY即可完成模型配置,配置完模型后,就可以在应用中使用这些模型了。
-
系统模型配置
2. 构建应用
2.1 应用类型
- 在 Dify 中,一个“应用”是指基于大语言模型构建的实际场景应用。通过创建应用,你可以将智能 AI 技术应用于特定的需求。它既包含了开发 AI 应用的工程范式,也包含了具体的交付物。一个应用为开发者交付了:
- 封装友好的 API,可由后端或前端应用直接调用,通过 Token 鉴权
- 开箱即用、美观且托管的 WebApp,你可以 WebApp 的模板进行二次开发
- 一套包含提示词工程、上下文管理、日志分析和标注的易用界面
- Dify 中提供了五种应用类型:
- 聊天助手:基于 LLM 构建对话式交互的助手
- 文本生成应用:面向文本生成类任务的助手,例如撰写故事、文本分类、翻译等
- Agent:能够分解任务、推理思考、调用工具的对话式智能助手
- Chatflow对话流:适用于定义等复杂流程的多轮对话场景,具有记忆功能的应用编排方式
- Workflow工作流:适用于自动化、批处理等单轮生成类任务的场景的应用编排方式
2.2 构建应用方式
- 基于应用模板创建(新手推荐):可以从导航选择 「工作室 」,在应用列表内选择 「从模板创建」
- 创建一个空白应用:可以从导航选择 「工作室」 ,在应用列表内选择 「从空白创建 」
- 通过 DSL 文件(本地/在线)创建应用:Dify DSL 是由 Dify.AI 所定义的 AI 应用工程文件标准,文件格式为 YML。该标准涵盖应用在 Dify 内的基本描述、模型参数、编排配置等信息。
2.3 创建面试官助手
- 首页选择创建空白应用,填上应用名称(面试官助手),应用类型选择聊天助手
- 编排应用,创建应用后会自动跳转到应用概览页。点击左侧菜单 编排 来编排应用
- 填写提示词:提示词用于约束 AI 给出专业的回复,让回应更加精确。你可以借助内置的提示生成器,编写合适的提示词。提示词内支持插入表单变量,例如
{{input}}
。提示词中的变量的值会替换成用户填写的值。