开源 LLM 应用开发平台 Dify 全栈部署指南(Docker Compose 方案)
开源 LLM 应用开发平台 Dify 全栈部署指南(Docker Compose 方案)
一、部署环境要求与前置检查
1.1 硬件最低配置
| 组件 | 要求 |
|---|---|
| CPU | 双核及以上 |
| 内存 | 4GB 及以上 |
| 磁盘空间 | 20GB 可用空间 |
1.2 系统兼容性验证
- ✅ 官方支持系统:
- Ubuntu 20.04/22.04 LTS
- Debian 11/12
- ❗ 注意事项:
- 推荐使用纯净系统环境
- 避免与其他占用 80/443 端口的服务冲突
1.3 安装验证
部署成功查看:

浏览器访问:

二、容器化部署全流程
2.1 容器运行时安装
Docker 引擎部署
# 卸载旧版本(全新安装可跳过)
sudo apt-get remove docker docker-engine docker.io containerd runc# 安装依赖工具集
sudo apt-get update && sudo apt-get install -y \ca-certificates \curl \gnupg \lsb-release# 添加官方 GPG 密钥
sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg# 设置稳定版仓库
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 安装 Docker CE
sudo apt-get update && sudo apt-get install -y \docker-ce \docker-ce-cli \containerd.io \docker-buildx-plugin \docker-compose-plugin
Docker Compose 安装
# 获取最新稳定版(示例版本号可替换)
COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d\" -f4)
sudo curl -L "https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" \-o /usr/local/bin/docker-compose# 权限配置
sudo chmod +x /usr/local/bin/docker-compose# 验证安装
docker-compose --version
2.2 部署架构解析
Dify 的 Docker 部署包含以下核心组件:
2.3 服务部署实战
步骤 1:获取部署清单
git clone -b main https://github.com/langgenius/dify.git && cd dify/docker# 用户推荐使用镜像源:需要gitee账号
# git clone https://gitee.com/langgenius/dify.git
步骤 2:环境配置
cp .env.example .env# 关键配置项建议修改
sed -i 's/HTTP_PORT=80/HTTP_PORT=5080/g' .env # 避免端口冲突
sed -i 's/SUPERADMIN_EMAIL=.*/SUPERADMIN_EMAIL=admin@yourdomain.com/g' .env
步骤 3:配置镜像源
#配置镜像加速源sudo nano /etc/docker/daemon.json"https://docker.1ms.run","https://hub.rat.dev","https://docker.1panel.live","https://hub.rat.dev","https://proxy.1panel.live","https://ghcr.nju.edu.cn","https://docker.registry.cyou","https://dockercf.jsdelivr.fyi","https://docker.rainbond.cc","https://registry.cn-shenzhen.aliyuncs.com","https://dockertest.jsdelivr.fyi","https://mirror.aliyuncs.com","https://mirror.baidubce.com","https://docker.mirrors.ustc.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","https://mirror.iscas.ac.cn","https://docker.nju.edu.cn","https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.jsdelivr.fyi","https://docker-cf.registry.cyou"sudo systemctl daemon-reloadsudo systemctl restart docker
步骤 4:启动服务集群
# 首次启动建议观察日志:下载速度可能比较慢
docker-compose up -d --build && docker-compose logs -f --tail=100
三、部署验证与初始化
3.1 服务状态检查
# 预期输出示例
docker-compose psroot@wh-VMware-Virtual-Platform:~/dify/docker# docker-compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
docker-api-1 langgenius/dify-api:1.1.3 "/bin/bash /entrypoi…" api 21 minutes ago Up 21 minutes 5001/tcp
docker-db-1 postgres:15-alpine "docker-entrypoint.s…" db 21 minutes ago Up 21 minutes (healthy) 5432/tcp
docker-nginx-1 nginx:latest "sh -c 'cp /docker-e…" nginx 21 minutes ago Up 21 minutes
3.2 初始化管理员账户
- 访问
http://<your-server-ip>:80 - 按提示填写:
- 组织名称
- 管理员邮箱
- 密码(复杂度要求:至少8位含大小写字母和数字)
四、高阶配置指南
4.1 反向代理配置(可选)
#以上是全量安装已配置好nginx,可无需配置
server {listen 80;server_name dify.yourdomain.com;location / {proxy_pass http://localhost:5080;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# WebSocket 支持proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}
}
4.2 数据持久化配置(可选)
默认数据存储路径:
- PostgreSQL:/var/lib/docker/volumes/dify_pg-data/_data
- Redis:/var/lib/docker/volumes/dify_redis-data/_data
建议绑定到自定义目录:
# 修改 docker-compose.yml
services:postgres:volumes:- /data/dify/postgres:/var/lib/postgresql/dataredis:volumes:- /data/dify/redis:/data
五、故障排查手册
5.1 常见问题处理
问题 1:容器启动失败
✅ 排查步骤:
- 查看日志:
docker-compose logs <service-name> - 检查端口冲突:
ss -tulnp | grep ':80' - 验证依赖服务:确保 PostgreSQL/Redis 正常启动
问题 2:无法访问安装页面
✅ 解决方案:
- 检查防火墙设置:
sudo ufw allow 5080/tcp - 验证服务绑定地址:
docker exec dify-web netstat -ant | grep 3000
六、维护与升级
6.1 服务更新流程
# 拉取最新代码
git pull origin main# 重建服务
docker-compose down && docker-compose up -d --build
6.2 数据备份方案
# PostgreSQL 备份
docker exec dify-db pg_dump -U postgres dify > dify_backup_$(date +%Y%m%d).sql# Redis 备份
docker exec dify-redis redis-cli save
cp /data/dify/redis/dump.rdp ./redis_backup_$(date +%Y%m%d).rdb
技术总结
本文详细阐述了 Dify 开源平台的容器化部署方案,具有以下技术亮点:
- 全栈隔离部署:通过 Docker Compose 实现服务组件隔离,确保环境一致性
- 生产级配置:包含反向代理、数据持久化等企业级部署方案
- 可观测性增强:提供完整的日志查看与状态监控命令
- 大陆优化方案:针对国内用户提供镜像加速配置建议
建议将本文所述方案部署于测试环境验证后,再迁移至生产环境。更多高级配置请参考 Dify 官方文档。
如果本教程帮助您解决了问题,请点赞❤️收藏⭐支持!欢迎在评论区留言交流技术细节!
相关文章:
开源 LLM 应用开发平台 Dify 全栈部署指南(Docker Compose 方案)
开源 LLM 应用开发平台 Dify 全栈部署指南(Docker Compose 方案) 一、部署环境要求与前置检查 1.1 硬件最低配置 组件要求CPU双核及以上内存4GB 及以上磁盘空间20GB 可用空间 1.2 系统兼容性验证 ✅ 官方支持系统: Ubuntu 20.04/22.04 L…...
BN 层的作用, 为什么有这个作用?
BN 层(Batch Normalization)——这是深度神经网络中非常重要的一环,它大大改善了网络的训练速度、稳定性和收敛效果。 🧠 一句话理解 BN 层的作用: Batch Normalization(批归一化)通过标准化每一…...
JavaScript 中常见的鼠标事件及应用
JavaScript 中常见的鼠标事件及应用 在 JavaScript 中,鼠标事件是用户与网页进行交互的重要方式,通过监听这些事件,开发者可以实现各种交互效果,如点击、悬停、拖动等。 在 JavaScript 中,鼠标事件类型多样࿰…...
【nginx】Nginx的功能特性及常用功能
目录 1.核心功能特性1.1 高并发处理能力1.2 反向代理与负载均衡1.3 静态资源服务1.4 缓存加速1.5 SSL/TLS支持1.6 动态模块扩展1.7 流媒体服务1.8 高可用性 2.常用功能场景2.1 反向代理与负载均衡2.2 静态资源服务2.3 缓存加速2.4 HTTPS支持2.5 API网关2.6 微服务网关 3.优势总…...
make_01_Program_01_makefile .SECONDARY .dirstamp 是什么功能
在 Makefile 中,.SECONDARY 和 .dirstamp 与 GNU Make 处理文件和目标的方式有关。让我们分别解释这两个部分,以及它们结合在一起时的功能。 .SECONDARY 功能:.SECONDARY 是一个特殊的伪目标,用于告诉 make 保留所有中间目标文件…...
金仓数据库KCM认证考试介绍【2025年4月更新】
KCM(金仓认证大师)认证是金仓KES数据库的顶级认证,学员需通过前置KCA、KCP认证才能考KCM认证。 KCM培训考试一般1-2个月一次,KCM报名费原价为1.8万,当前优惠价格是1万(趋势是:费用越来越高&…...
在 macOS 上安装和配置 Aria2 的详细步骤
在 macOS 上安装和配置 Aria2 的详细步骤: 1.安装 Aria2 方式一:使用 Homebrew Homebrew 是 macOS 上的包管理器,可以方便地安装和管理软件包。 • 打开终端。 • 输入以下命令安装 Aria2: brew install aria2• 检查安装是否…...
如何通过句块训练法(Chunks)提升英语口语
真正说一口流利英语的人,并不是会造句的人,而是擅长“调取句块”的人。下面我们从原理、方法、场景、资源几个维度展开,告诉你怎么用“句块训练法(Chunks)”快速提升英语口语: 一、什么是“句块”ÿ…...
[ctfshow web入门]burpsuite的下载与使用
下载 吾爱破解网站工具区下载burpsuite https://www.52pojie.cn/thread-1544866-1-1.html 本博客仅转载下载链接,下载后请按照说明进行学习使用 打开 配置 burpsuite配置 burpsuite代理设置添加127.0.0.1:8080 浏览器配置 如果是谷歌浏览器,打开win…...
文章记单词 | 第25篇(六级)
一,单词释义 mathematical:形容词,意为 “数学的;数学上的;运算能力强的;关于数学的”trigger:名词,意为 “(枪的)扳机;(炸弹的&…...
vscode集成deepseek实现辅助编程(银河麒麟系统)【详细自用版】
针对开发者用户,可在Visual Studio Code中接入DeepSeek,实现辅助编程。 可参考我往期文章在银河麒麟系统环境下部署DeepSeek:基于银河麒麟桌面&&服务器操作系统的 DeepSeek本地化部署方法【详细自用版】 一、前期准备 (…...
【CMake】《CMake构建实战:项目开发卷》笔记-Chapter8-生成器表达式
第8章 生成器表达式 生成器表达式(generator expression)是由CMake生成器进行解析的表达式,因此,这些表达式只有在CMake的生成阶段才被解析为具体的值。 CMake在生成阶段,能够根据具体选用的构建系统生成器生成特定…...
elementui的默认样式修改
今天用element ui ,做了个消息提示,发现提示的位置总是在上面,如图: 可是我想让提示的位置到下面来,该怎么办? 最后还是看了官方的api 原来有个自定义样式属性 customClass 设置下就好了 js代码 css代码 效…...
基于STM32的智能门禁系统设计与实现
一、项目背景与功能概述 在物联网技术快速发展的今天,传统门锁正在向智能化方向演进。本系统基于STM32F103C8T6微控制器,整合多种外设模块,实现了一个具备以下核心功能的智能门禁系统: 密码输入与验证(4x3矩阵键盘&a…...
基于SpringBoot的河道水情大数据可视化分析平台设计与实现(源码+论文+部署讲解等)
需要资料,请文末联系 一、平台介绍 水情监测数据大屏 - 平台首页 日均水位 日均水速 二、论文内容 摘要(中文) 本文针对河道水情监测领域的数据管理和可视化分析需求,设计并实现了一套河道水情大数据可视化分析平台。该平台基…...
日志统计(双指针)
题目描述 小明维护着一个程序员论坛。现在他收集了一份"点赞"日志,日志共有 NN 行。其中每一行的格式是: ts idts id 表示在 tsts 时刻编号 idid 的帖子收到一个"赞"。 现在小明想统计有哪些帖子曾经是"热帖"。如果一个帖…...
广告推荐算法:COSMO算法与A9算法的对比
COSMO算法与A9算法的概念解析 1. A9算法 定义与背景: A9算法是亚马逊早期为电商平台研发的核心搜索算法,主要用于优化商品搜索结果的排序和推荐,其核心逻辑围绕产品属性与关键词匹配展开。自2003年推出以来,A9通过分析商品标题…...
Java进阶之旅-day05:网络编程
引言 在当今数字化的时代,网络编程在软件开发中扮演着至关重要的角色。Java 作为一门广泛应用的编程语言,提供了强大的网络编程能力。今天,我们深入学习了 Java 网络编程的基础知识,包括基本的通信架构、网络编程三要素、IP 地址、…...
Vue 3 的响应式原理
Vue 3 的响应式原理可以比喻为“智能监控系统”:当数据变化时,它能自动追踪依赖关系并触发更新。以下是通俗解释和核心机制: 一、核心原理:Proxy 代理 Vue 3 的响应式系统基于 JavaScript 的 Proxy 对象实现(Vue 2 使…...
Python解决“组成字符串ku的最大次数”问题
Python解决“组成字符串ku的最大次数”问题 问题描述测试样例解题思路代码 问题描述 给定一个字符串 s,该字符串中只包含英文大小写字母。你需要计算从字符串中最多能组成多少个字符串 “ku”。每次可以随机从字符串中选一个字符,并且选中的字符不能再使…...
【JS】使用滑动窗口得到无重复字符的最长子串
题目 思路 本题采用滑动窗口思想,定义左右指针作为滑动窗口的边界,使用Set数据结构处理重复字符,需要注意的是:每次遍历时采用Math.max方法实时更新最长子串的长度;当左指针移动时,set要删除对应字符。 步…...
libreoffice-help-common` 的版本(`24.8.5`)与官方源要求的版本(`24.2.7`)不一致
出现此错误的原因主要是软件包依赖冲突,具体分析如下: ### 主要原因 1. **软件源版本不匹配(国内和官方服务器版本有差距) 系统中可能启用了第三方软件源(如 PPA 或 backports 源),导致 lib…...
2025-04-05 吴恩达机器学习4——逻辑回归(1):基础入门
文章目录 1 分类问题1.1 介绍1.2 线性回归与分类1.2 逻辑回归 2 逻辑回归2.1 介绍2.2 Sigmoid 函数2.3 逻辑回归模型 3 决策边界3.1 概念3.2 线性决策边界3.3 非线性决策边界 4 代价函数4.1 不使用平方误差4.2 损失函数4.3 整体代价函数 5 梯度下降5.1 参数更新5.2 逻辑回归 vs…...
P1125 [NOIP 2008 提高组] 笨小猴
#include<bits/stdc.h> using namespace std; int a[300],ma,mi105;//数组用来记录每个字符出现的次数,将mi初始为一个比较大的值 bool is_prime(int x){if(x0||x1)return false;for(int i2;i*i<x;i){if(x%i0)return false;}return true; }//判断是否为质…...
Linux systemd 服务全面详解
一、systemd 是什么? systemd 是 Linux 系统的现代初始化系统(init)和服务管理器,替代传统的 SysVinit 和 Upstart。它不仅是系统启动的“总指挥”,还统一管理服务、日志、设备挂载、定时任务等。 核心作用 服务管理…...
SortedSet结构之用户积分实时榜单实战
Redis 中的SortedSet结构非常适合用于实现实时榜单的场景,它根据成员的分数自动进行排序,支持高效的添加、更新和查询操作。 SortedSet实时榜单的一些典型应用场景: 游戏中的玩家排行榜:在多人在线游戏中,使用 Sorte…...
C++_类和对象(中)
【本节目标】 类的6个默认成员函数构造函数析构函数拷贝构造函数赋值运算符重载const成员函数取地址及const取地址操作符重载 1. 类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何类在什…...
#SVA语法滴水穿石# (007)关于 $past 的用法
今天,我们要学习比较重要的一个关键字。$past 的用法,今天系统学习。 1. $past 函数的核心作用 $past 用于 获取某个信号在过去指定时钟周期前的值,通常用于检查历史状态是否符合预期。 其语法如下: $past(signal, [num_cycles], [gating_condition], [clock], [reset])…...
学习笔记—C++—入门基础()
目录 C介绍 参考文档 C第一个程序 命名空间namespace namespace的价值 namespace的定义 namespace使用 指定命名空间访问 using将命名空间中某个成员展开 展开命名空间中全部成员 输入和输出 缺省参数 函数重载 引用 引用的概念 应用 const引用 指针和引用的关…...
kotlin函数类型
一 函数类型定义 1 定义 函数类型就是 (Int, Int) -> Int 函数类型其实就是将函数的 “参数类型” 和 “返回值类型” 抽象出来 2 示例 : (Int, Int) -> Int 表示接收两个 Int 参数并返回 Int 的函数类型; (String) -> Unit 表示接收 Strin…...
