当前位置: 首页 > news >正文

Dify-16: 开发环境配置

本指南提供了为 Dify 搭建本地开发环境的全面说明,涵盖 API 后端(Python 编写)和 Web 前端(Next.js 构建)组件。

系统架构概述

在深入搭建流程前,先了解开发过程中需要接触的 Dify 核心组件:

前置条件

必需软件
  • Python:3.11 或 3.12 版本(API 后端必需)
  • Node.js:v18.18.0 或更高版本(Web 前端必需)
  • 包管理器
    • UV(Python 依赖管理)
    • pnpm v10.x(JavaScript 依赖管理)
  • Docker 与 Docker Compose:运行中间件服务
推荐开发工具
  • IDE:Visual Studio Code 或其他支持 Python/JavaScript 的 IDE
  • Git:版本控制工具
  • 数据库客户端:查看 PostgreSQL 数据

中间件服务设置

Dify 需要通过 Docker Compose 运行的多个中间件服务。

使用 Docker Compose 运行中间件
  1. 进入 docker 目录:

    cd docker  
    
  2. 创建中间件环境文件:

    cp middleware.env.example middleware.env  
    
  3. 启动中间件服务:

    # 默认使用 Weaviate 向量数据库  
    docker compose -f docker-compose.middleware.yaml --profile weaviate -p dify up -d  
    

API 后端设置

配置
  1. 进入 API 目录:

    cd api  
    
  2. 创建 .env 文件:

    cp .env.example .env  
    
  3. 生成密钥:

    # Linux  
    sed -i "/^SECRET_KEY=/c\SECRET_KEY=$(openssl rand -base64 42)" .env  
    # macOS  
    secret_key=$(openssl rand -base64 42)  
    sed -i '' "/^SECRET_KEY=/c\\  
    SECRET_KEY=${secret_key}" .env  
    
安装依赖

API 后端使用 UV 管理依赖:

# 若未安装 UV,先安装  
pip install uv  
# 安装依赖  
uv sync --dev  
数据库迁移

首次运行前需迁移数据库:

uv run flask db upgrade  
运行 API 服务器

启动开发模式的 API 服务器:

uv run flask run --host 0.0.0.0 --port=5001 --debug  
运行 Celery Worker

处理数据集导入、文档索引等异步任务:

uv run celery -A app.celery worker -P gevent -c 1 --loglevel INFO -Q dataset,generation,mail,ops_trace,app_deletion  

Web 前端设置

配置
  1. 进入 web 目录:

    cd web  
    
  2. 创建 .env.local 文件:

    cp .env.example .env.local  
    
  3. 配置环境变量(本地开发关键参数):

    • NEXT_PUBLIC_API_PREFIX:控制台 API URL(默认:http://localhost:5001/console/api)
    • NEXT_PUBLIC_PUBLIC_API_PREFIX:Web 应用 API URL(默认:http://localhost:5001/api)
安装依赖

Web 前端使用 pnpm 管理依赖:

# 若未安装 pnpm,先安装  
npm install -g pnpm@10.8.0  # 安装依赖  
pnpm install  
运行 Web 服务器

启动开发模式的 Web 服务器:

pnpm run dev  

Next.js 开发服务器将运行于 http://localhost:3000。

开发工作流程

目录结构

代码库主要组件:

  • api/:Python 后端(Flask)
  • web/:Next.js 前端
  • docker/:Docker 配置文件

测试

API 测试
cd api  
# 运行所有测试  
uv run bash dev/pytest/pytest_all_tests.sh  # 仅运行单元测试  
uv run bash dev/pytest/pytest_unit_tests.sh  # 运行向量数据库(VDB)测试  
uv run bash dev/pytest/pytest_vdb.sh  
Web 测试
cd web  
pnpm test  

代码格式化与检查

API(Python)
# 格式化代码  
uv run --directory api --dev ruff format ./  # 检查代码  
uv run --directory api --dev ruff check ./  
Web(JavaScript/TypeScript)
# 代码检查  
pnpm run lint  # 自动修复检查问题  
pnpm run fix  

使用 Docker 运行

若希望通过 Docker 容器运行完整栈,可使用提供的 Docker Compose 文件。

运行完整 Docker Compose 栈
  1. 创建环境文件:

    cd docker  
    cp .env.example .env  
    
  2. 启动所有服务:

    docker compose up -d  
    

将启动包括 API、Web、Worker、数据库和中间件的所有服务。

环境变量参考

理解关键环境变量对配置开发环境至关重要。

API 环境变量
变量描述默认值
SECRET_KEY安全会话 Cookie 签名密钥(自动生成)
CONSOLE_API_URL控制台 API 后端 URLhttp://127.0.0.1:5001
CONSOLE_WEB_URL控制台 Web 前端 URLhttp://127.0.0.1:3000
DB_USERNAME数据库用户名postgres
DB_PASSWORD数据库密码difyai123456
DB_HOST数据库主机localhost
DB_PORT数据库端口5432
DB_DATABASE数据库名称dify
REDIS_HOSTRedis 主机localhost
REDIS_PORTRedis 端口6379
REDIS_PASSWORDRedis 密码difyai123456
VECTOR_STORE向量数据库类型weaviate
Web 环境变量
变量描述默认值
NEXT_PUBLIC_API_PREFIX控制台 API URLhttp://localhost:5001/console/api
NEXT_PUBLIC_PUBLIC_API_PREFIXWeb 应用 API URLhttp://localhost:5001/api
NEXT_PUBLIC_DEPLOY_ENV部署环境DEVELOPMENT
NEXT_PUBLIC_EDITION部署版本SELF_HOSTED

组件关系图

以下图表展示了开发环境中关键代码组件的关系:

故障排查

常见问题与解决方案
  • 数据库连接错误
    • 确保 PostgreSQL 在 Docker 中运行;
    • 检查 .env 文件中的数据库凭证;
    • 确认已通过 flask db upgrade 迁移数据库。
  • 向量数据库连接错误
    • 检查 Docker Compose 中是否启用了正确的向量数据库配置;
    • 验证 .env 中的向量数据库配置。
  • Redis 连接错误
    • 确保 Redis 在 Docker 中运行;
    • 检查 .env文件中的 Redis 凭证。
  • 模块未找到错误
    • 在 API 目录运行 uv sync --dev 确保依赖已安装;
    • 确认使用了正确的 Python 版本(3.11 或 3.12)。
  • 端口冲突
    • 若服务因端口冲突启动失败,修改 Docker Compose 文件或环境变量中的暴露端口。

开发技巧

  • 使用便捷脚本

    • dev/reformat:格式化 Python 代码;
    • dev/pytest/pytest_unit_tests.sh:运行单元测试。
  • 设置 Git 钩子:项目包含预提交检查的 Git 钩子,自动对修改文件运行代码检查。

  • 监控日志:关注 API、Web 和 Worker 服务的日志,快速定位问题。

  • 使用 Storybook:Web 前端集成了 Storybook 用于 UI 组件开发:

    cd web && pnpm storybook  
    
  • IDE 配置:VSCode 用户可将 web/.vscode/settings.example.json 重命名为 web/.vscode/settings.json,启用代码检查配置。

http://www.dtcms.com/a/320414.html

相关文章:

  • 【MySQL】SQL优化
  • Linux Shell为文件添加BOM并自动转换为unix格式
  • C++之队列浅析
  • 每日算法刷题Day58:8.7:leetcode 单调栈5道题,用时2h
  • 零基础-动手学深度学习-9.3. 深度循环神经网络
  • Langchain入门:对话式RAG
  • Tool Learning的基本概念及应用
  • 数据结构——栈、队列
  • python题目练习 无重叠区间
  • Linux学习-数据结构(二叉树)
  • 嵌入式开发学习———Linux环境下IO进程线程学习(六)
  • 了解大型语言模型:力量与潜力
  • SpringBoot学习日记 Day5:解锁企业级开发核心技能
  • PCIe Base Specification解析(九)
  • 多线程的使用
  • 2025 最新 ECharts 下载、安装与配置教程
  • Linux 中断系统全览解析:从硬件到软件的全路线理解
  • Oracle 19C In-Memory 列存储技术测试
  • Qwen系列模型
  • [链表]两两交换链表中的节点
  • 【感知机】感知机(perceptron)学习算法的对偶形式
  • aurora rx没有ready信号
  • 哈希表——指针数组与单向链表的结合
  • linux顽固进程查看并清理
  • Java包装类详解与应用指南
  • SupChains技术团队:需求预测中减少使用分层次预测(五)
  • 目标检测数据集 - 眼睛瞳孔检测数据集下载「包含COCO、YOLO两种格式」
  • 菜鸟笔记007 [...c(e), ...d(i)]数组的新用法
  • (数据结构)顺序表实现-增删查改
  • java中override和overload的区别