从零开始部署Dify:后端与前端服务完整指南

news/2025/2/8 1:12:11/

从零开始部署Dify:后端与前端服务完整指南

    • 一、环境准备
      • 1. 系统要求
      • 2. 项目结构
    • 二、后端服务部署
      • 1. 中间件启动(Docker Compose)
      • 2. 后端环境配置
      • 3. 依赖安装与数据库迁移
      • 4. 服务启动
    • 三、前端界面搭建
      • 1. 环境配置
      • 2. 服务启动
    • 四、常见问题排查
    • 五、总结

在AI应用开发中,Dify作为一款功能强大的工具,其部署过程涉及多个技术栈的整合。本文将详细讲解如何从零开始搭建Dify的完整环境,包括后端服务和前端界面的配置与启动。


一、环境准备

1. 系统要求

  • 操作系统:Windows Subsystem for Linux (WSL) 或 Ubuntu 22.04+
  • Docker:版本24.0+
  • Python:3.12(通过Poetry管理)
  • Node.js:v18.x LTS(NPM/Yarn)

2. 项目结构

dify/
├── docker/
│   ├── docker-compose.middleware.yaml
│   └── middleware.env
├── api/
│   ├── .env
│   └── requirements.txt
└── web/├── package.json└── .env.local

二、后端服务部署

1. 中间件启动(Docker Compose)

# 进入docker目录
cd ../docker# 复制环境变量模板
cp middleware.env.example middleware.env# 启动Weaviate配置的中间件栈
docker compose -f docker-compose.middleware.yaml \--profile weaviate \-p dify \up -d

注意:在WSL环境中,不能使用/mnt路径,否则dify-db-1容器报错initdb: error: could not change permissions of directory "/var/lib/postgresql/data/pgdata": Operation not permitted,无法启动。

2. 后端环境配置

# 进入API目录
cd ../api# 生成随机密钥
sed -i "/^SECRET_KEY=/c\SECRET_KEY=$(openssl rand -base64 42)" .env

3. 依赖安装与数据库迁移

# 激活Poetry环境
poetry env use 3.12
poetry lock
poetry install# 数据库迁移
poetry run python -m flask db upgrade

4. 服务启动

# 后台启动API服务
poetry run python -m flask run \--host 0.0.0.0 \--port=5001 \--debug# 启动Celery异步任务队列
poetry run python -m celery \-A app.celery worker \-P gevent \-c 1 \--loglevel INFO \-Q dataset,generation,mail,ops_trace,app_deletion

三、前端界面搭建

1. 环境配置

# 安装Node.js依赖
npm install# 配置环境变量
cp .env.example .env.local# 示例配置(根据实际环境调整)
NEXT_PUBLIC_API_PREFIX=http://localhost:5001/console/api
NEXT_PUBLIC_PUBLIC_API_PREFIX=http://localhost:5001/api

2. 服务启动

# 开发模式启动
npm run dev# 访问地址
http://localhost:3000

四、常见问题排查

  1. 端口冲突:检查50013000端口是否被占用
  2. 环境变量错误:确保.env文件无语法错误

五、总结

通过以上步骤,我们成功搭建了Dify的完整运行环境。后端服务负责数据处理与存储,前端界面提供直观的操作界面。


参考文档:


http://www.ppmy.cn/news/1570194.html

相关文章

因果推断与机器学习—可解释性、公平性和因果机器学习

随着人工智能技术的飞速发展,如人脸识别、自动驾驶、智能音箱和手术机器人等在社会各领域广泛应用,人工智能已成为科技革命和产业变革的核心驱动力。然而,在带来便利的同时,也引发了一系列问题: 数据统计:2016 年,基于美国食品和药物管理局(U.S. Food and Drug Adminis…

vue3 的 onScopeDispose 是什么作用

onScopeDispose 是 Vue 3 中用于管理响应式副作用的一个重要 API,主要用于在当前活跃的 effect 作用域上注册一个处理回调函数。当这个作用域停止时,所注册的回调函数会被调用。这种机制使得开发者能够有效地清理和管理资源,尤其是在组合式函…

windows系统中docker根据Dockerfile文件部署jar包到容器中

第一步:在windows下安装docker容器(忽略,自行百度一下)。 第二步:在IDEA中打包jar包 第三步:准备Dockerfile文件 FROM registry.cn-hangzhou.aliyuncs.com/hzbs/eclipse-temurin:17WORKDIR /appCOPY pla…

【教学】推送docker仓库

引言 Docker Hub 这个最常见的公共 Docker 仓库为例,本文将介绍如何把本地 Docker 镜像推送到公共 Docker 仓库 1. 注册 Docker Hub 账号 如果你还没有 Docker Hub 账号,需要先在 Docker Hub 官网 进行注册。注册完成后,记住你的用户名和密…

JS实现一个通用的循环填充数组的方法

function createFilledArray(length, pattern) {return Array.from({ length }, (_, i) > pattern[i % pattern.length]); }// 示例 const result createFilledArray(8, [1, 2, 3]);console.log(result); // [1, 2, 3, 1, 2, 3, 1, 2]解析: createFilledArray(…

图书管理系统 Axios 源码__编辑图书

目录 功能概述: 代码实现(index.js): 代码解析: 图书管理系统中,删除图书功能是核心操作之一。下是基于 HTML、Bootstrap、JavaScript 和 Axios 实现的删除图书功能的详细介绍。 功能概述: …

力扣988. 从叶结点开始的最小字符串

Problem: 988. 从叶结点开始的最小字符串 文章目录 题目描述思路复杂度Code 题目描述 思路 遍历思想(利用二叉树的先序遍历) 在先序遍历的过程中,用一个变量path拼接记录下其组成的字符串,当遇到根节点时再将其反转并比较大小(字典顺序大小&…

解决whisper 本地运行时GPU 利用率不高的问题

我在windows 环境下本地运行whisper 模型,使用的是nivdia RTX4070 显卡,结果发现GPU 的利用率只有2% 。使用 import torch print(torch.cuda.is_available()) 返回TRUE。表示我的cuda 是可用的。 最后在github 的下列网页上找到了问题 极低的 GPU 利…