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 compose部署主从复制的实现

    docker compose部署主从复制的实现

    本文记录了通过 docker compose 搭建一主双从的 Redis 服务。文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Docker容器修改端口映射的实现

    Docker容器修改端口映射的实现

    本文主要介绍了Docker容器修改端口映射的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Docker 基础网络配置详解

    Docker 基础网络配置详解

    这篇文章主要介绍了Docker 基础网络配置详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • docker build上下文的实现示例

    docker build上下文的实现示例

    Docker build上下文是构建Docker镜像时传递给Docker引擎的所有文件和目录的集合,可以提高构建效率,避免无用文件的传输,同时确保镜像构建过程的顺利进行,感兴趣的可以了解一下
    2025-09-09
  • Jenkins+Docker持续集成的实现

    Jenkins+Docker持续集成的实现

    Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。本文介绍了Jenkins Docker持续集成,分享给大家
    2021-05-05
  • docker仓库数据传输加密的问题小结

    docker仓库数据传输加密的问题小结

    这篇文章主要介绍了docker仓库数据传输加密的问题小结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-12-12
  • 详解Docker容器的日志处理

    详解Docker容器的日志处理

    这篇文章主要介绍了详解Docker容器的日志处理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • centos docker容器化部署nginx php项目实践

    centos docker容器化部署nginx php项目实践

    这篇文章主要介绍了centos docker容器化部署nginx php项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06
  • 解决docker访问外部https数字证书问题

    解决docker访问外部https数字证书问题

    这篇文章主要介绍了docker访问外部https数字证书问题,为了解决证书验证的问题,我们需要在构建 docker 镜像的时候将 ca-certificates 根证书装上,需要的朋友可以参考下
    2022-09-09
  • 宿主机器和docker容器互传文件方式

    宿主机器和docker容器互传文件方式

    文章介绍了如何使用docker ps命令查看Docker容器的container_id,以及如何使用docker cp命令将文件从宿主机传输到Docker容器中
    2025-10-10

最新评论