dify docker部署全过程

 更新时间:2026年01月31日 08:47:02   作者:心之语歌  
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 文件夹下

  • 3000 端口是 docker-web-1 的 ip address 填入
  • 5001 端口是 docker-api-1 的 ip address 填入

后面直接重启对应的 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 工作流分为两种类型:

  • Chatflow:面向对话类情景,包括客户服务、语义搜索、以及其他需要在构建响应时进行多步逻辑的对话式应用程序。
  • Workflow:面向自动化和批处理情景,适合高质量翻译、数据分析、内容生成、电子邮件自动化等应用程序。为解决自然语言输入中用户意图识别的复杂性,Chatflow 提供了问题理解类节点。相对于 Workflow 增加了 Chatbot 特性的支持,如:对话历史(Memory)、标注回复、Answer 节点等。

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

常见案例

客户服务

  • 通过将 LLM 集成到你的客户服务系统中,你可以自动化回答常见问题,减轻支持团队的工作负担。
  • LLM 可以理解客户查询的上下文和意图,并实时生成有帮助且准确的回答。

内容生成

  • 无论你需要创建博客文章、产品描述还是营销材料,LLM 都可以通过生成高质量内容来帮助你。
  • 只需提供一个大纲或主题,LLM将利用其广泛的知识库来制作引人入胜、信息丰富且结构良好的内容。

任务自动化

  • 可以与各种任务管理系统集成,如 Trello、Slack、Lark、以自动化项目和任务管理。
  • 通过使用自然语言处理,LLM 可以理解和解释用户输入,创建任务,更新状态和分配优先级,无需手动干预。

数据分析和报告

  • 可以用于分析大型知识库并生成报告或摘要。
  • 通过提供相关信息给 LLM,它可以识别趋势、模式和洞察力,将原始数据转化为可操作的智能。
  • 对于希望做出数据驱动决策的企业来说,这尤其有价值。

邮件自动化处理

  • LLM 可以用于起草电子邮件、社交媒体更新和其他形式的沟通。
  • 通过提供简要的大纲或关键要点,LLM 可以生成一个结构良好、连贯且与上下文相关的信息。
  • 这样可以节省大量时间,并确保你的回复清晰和专业。

总结

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

相关文章

  • Docker如何多步构建生成dubbo-admin镜像详解

    Docker如何多步构建生成dubbo-admin镜像详解

    dubbo-admin是dubbo框架的管理平台,下面这篇文章主要给大家介绍了关于Docker如何多步构建生成dubbo-admin镜像的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2018-04-04
  • docker容器内部可以访问,外部无法访问的处理

    docker容器内部可以访问,外部无法访问的处理

    这篇文章主要介绍了docker容器内部可以访问,外部无法访问的处理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • docker常用命令及设置开机自启方式

    docker常用命令及设置开机自启方式

    这篇文章主要介绍了docker常用命令及设置开机自启方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • docker Desktop安装WSL --update报错问题成功解决办法

    docker Desktop安装WSL --update报错问题成功解决办法

    这篇文章主要介绍了如何在Windows 11上设置WSL2为默认版本,解决WSL2安装和卸载过程中遇到的问题,包括强制中断命令、wsl--uninstall命令无效以及手动删除Linux发行版的方法,需要的朋友可以参考下
    2025-02-02
  • Docker同时安装MySQL和MariaDB的方法步骤

    Docker同时安装MySQL和MariaDB的方法步骤

    这篇文章主要介绍了Docker同时安装MySQL和MariaDB的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 在Ubuntu Server 22.04上安装 Docker的详细步骤记录

    在Ubuntu Server 22.04上安装 Docker的详细步骤记录

    通过使用容器技术,Docker能够让开发人员将应用及其依赖环境一同打包,从而实现快速部署、一致的开发环境和优秀的可移植性,这篇文章主要给大家给大家介绍了关于在Ubuntu Server 22.04上安装 Docker详细步骤的相关资料,需要的朋友可以参考下
    2024-08-08
  • 解决docker pull出现错误:Error response from daemon

    解决docker pull出现错误:Error response from daemon

    这篇文章主要给大家介绍了关于解决docker pull出现错误:Error response from daemon的相关资料,这个错误提示一般是因为你没有权限拉取对应的镜像,文中将解决办法介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • Docker 部署RocketMQ的详细操作

    Docker 部署RocketMQ的详细操作

    这篇文章主要介绍了Docker 部署RocketMQ的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • docker查询日志并输出到文件的方法

    docker查询日志并输出到文件的方法

    docker的运行的时候我们喜欢采用 -d 的命令来启动docker容器,这就导致了一个问题,无法直接看到docker运行日志,只能去后台进去找到日志文件查看,下面这篇文章主要给大家介绍了关于docker查询日志并输出到文件的相关资料,需要的朋友可以参考下
    2023-06-06
  • Docker容器中的OpenCV如何轻松构建可移植的计算机视觉环境

    Docker容器中的OpenCV如何轻松构建可移植的计算机视觉环境

    计算机视觉是一门涉及图像和视频处理的领域,可以应用于目标检测、图像识别、人脸识别等各种任务,本文给大家介绍Docker容器中的OpenCV如何轻松构建可移植的计算机视觉环境,感兴趣的朋友一起看看吧
    2023-12-12

最新评论