docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > dify docker部署

dify docker部署全过程

作者:心之语歌

Dify是一款开源的LLM应用开发平台,融合了后端即服务和LLMOps的理念,使开发者可以快速搭建生产级的生成式AI应用,它提供了一系列关键技术栈,包括对数百个模型的支持、直观的Prompt编排界面、高质量的RAG引擎、稳健的Agent框架和灵活的流程编排

简绍

Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。

由于 Dify 内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、稳健的 Agent 框架、灵活的流程编排,并同时提供了一套易用的界面和 API。这为开发者节省了许多重复造轮子的时间,使其可以专注在创新和业务需求上。

docker dify 部署

官网地址:

https://docs.dify.ai/zh-hans/guides/knowledge-base

去官方仓库 将代码 拉下来

git clone https://github.com/langgenius/dify.git

进入 Dify 源代码的 Docker 目录

cd dify/docker

复制配置环境

cp .env.example .env

启动 docker compose 安装容器

docker compose up -d

等容器安装完后 可以看到 80 端口被占用

网址: http://127.0.0.1

安装问题

如 80 端口打不开,麻烦修改 env 文件, 找到如下调整端口

# ------------------------------
# Docker Compose Service Expose Host Port Configurations
# ------------------------------
EXPOSE_NGINX_PORT=8190
EXPOSE_NGINX_SSL_PORT=1443

打开网址报 502 或者 无法登录, 大概率是 nginx 转发失败

通过 查找 docker-web-1 和 docker-api-1 服务 的信息, 寻找对应的 IPAddress 的地址

C:\Users\sys>docker inspect docker-api-1

"Gateway": "172.19.0.1",
"IPAddress": "172.19.0.6",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
C:\Users\sys>docker inspect docker-web-1
"Gateway": "172.19.0.1",
"IPAddress": "172.19.0.5",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"DNSNames": [
	"docker-web-1",
	"web",
	"a9044b828f6e"
]

修改 dify/docker/nginx/conf.d 文件夹下

后面直接重启对应的 nginx 容器

# Please do not directly edit this file. Instead, modify the .env variables related to NGINX configuration.

server {
    listen ${NGINX_PORT};
    server_name ${NGINX_SERVER_NAME};

    location /console/api {
      proxy_pass http://172.19.0.6:5001;
      include proxy.conf;
    }

    location /api {
      proxy_pass http://172.19.0.6:5001;
      include proxy.conf;
    }

    location /v1 {
      proxy_pass http://172.19.0.6:5001;
      include proxy.conf;
    }

    location /files {
      proxy_pass http://172.19.0.6:5001;
      include proxy.conf;
    }

    location /explore {
      proxy_pass http://172.19.0.5:3000;
      include proxy.conf;
    }

    location /e {
      proxy_pass http://plugin_daemon:5002;
      proxy_set_header Dify-Hook-Url ://;
      include proxy.conf;
    }

    location / {
      proxy_pass http://172.19.0.5:3000;
      include proxy.conf;
    }

    # placeholder for acme challenge location
    ${ACME_CHALLENGE_LOCATION}

    # placeholder for https config defined in https.conf.template
    ${HTTPS_CONFIG}
}

500 报错

等待后台 api 启动, 以及可能版本升级出现数据库升级问题,可以考虑参考官方升级文档或者清除数据库文件记录

添加模型

在设备里有个 模型提供商, 可以在这边通过 ollama、xinference 等等 手段添加模型

使用方式

知识库添加自己的文档信息,然后通过Rerank 模型 和 Embedding 模型 导入知识库就可以了

模型供应商列表

Dify 为以下模型提供商提供原生支持:

其中 (🛠️) 代表支持 Function Calling,(👓) 代表视觉能力。

工作流

基本介绍工作流通过将复杂的任务分解成较小的步骤(节点)降低系统复杂度,减少了对提示词技术和模型推理能力的依赖,提高了 LLM 应用面向复杂任务的性能,提升了系统的可解释性、稳定性和容错性。

Dify 工作流分为两种类型:

为解决自动化和批处理情景中复杂业务逻辑,工作流提供了丰富的逻辑节点,如代码节点、IF/ELSE 节点、模板转换、迭代节点等,除此之外也将提供定时和事件触发的能力,方便构建自动化流程。

常见案例

客户服务

内容生成

任务自动化

数据分析和报告

邮件自动化处理

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文