菜单

环境配置

相关源文件

本文档涵盖了 Dify 的全面环境配置系统,包括 Docker 部署设置、特定服务配置和运行时环境管理。环境配置是控制 Dify 在不同部署场景下行为的主要机制。

有关 Docker 部署的详细信息,请参阅 Docker 部署。有关开发环境设置,请参阅 开发环境设置

配置架构概述

Dify 使用分层配置系统,结合环境变量、配置文件和运行时设置来管理平台在其分布式架构中的行为。

来源:docker/.env.example1-757 api/.env.example1-501 api/configs/app_config.py1-50 api/app_factory.py12-26

核心服务配置

该平台由三个主要服务组成,每个服务都有不同的配置要求,通过 docker-compose.yaml 共享环境模式进行管理。

共享环境变量

来源:docker/docker-compose.yaml7-11 api/configs/feature/__init__.py51-68 api/configs/feature/__init__.py18-49 api/configs/feature/__init__.py195-224 api/configs/feature/__init__.py226-244

特定服务配置

服务配置方法关键变量
API 服务共享环境 + MODE=apiDIFY_BIND_ADDRESS, DIFY_PORT, SERVER_WORKER_AMOUNT
Worker 服务共享环境 + MODE=workerCELERY_WORKER_AMOUNT, CELERY_AUTO_SCALE, CELERY_BROKER_URL
Web 服务Next.js 环境变量CONSOLE_API_URL, APP_API_URL, MARKETPLACE_API_URL

来源:docker/docker-compose.yaml510-535 docker/docker-compose.yaml539-562 docker/docker-compose.yaml565-587

数据库和存储配置

数据库配置层级

来源:api/configs/middleware/__init__.py96-202 docker/.env.example200-241 docker/docker-compose.yaml589-609

存储配置

存储通过 StorageConfig 类进行配置,通过 OpenDAL 抽象层支持多种后端。

存储类型配置类关键变量
OpenDAL(默认)OpenDALStorageConfigOPENDAL_SCHEME=fs, OPENDAL_FS_ROOT=storage
AWS S3S3StorageConfigS3_ENDPOINT, S3_BUCKET_NAME, S3_ACCESS_KEY
Azure BlobAzureBlobStorageConfigAZURE_BLOB_ACCOUNT_NAME, AZURE_BLOB_CONTAINER_NAME
Aliyun OSSAliyunOSSStorageConfigALIYUN_OSS_BUCKET_NAME, ALIYUN_OSS_ACCESS_KEY

来源:api/configs/middleware/__init__.py47-73 docker/.env.example307-396 api/extensions/ext_storage.py16-31

向量数据库配置

向量数据库系统通过 VectorFactory 中实现的工厂模式来支持多种提供商。

向量存储工厂模式

来源: core/rag/datasource/vdb/vector_factory.py58-127 core/rag/datasource/vdb/vector_type.py4-23 api/configs/middleware/__init__.py75-86 docker/.env.example401-618

向量数据库配置示例

向量存储默认配置连接变量
WeaviateVECTOR_STORE=weaviateWEAVIATE_ENDPOINT=http://weaviate:8080
WEAVIATE_API_KEY=WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih
QdrantVECTOR_STORE=qdrantQDRANT_URL=http://qdrant:6333
QDRANT_API_KEY=difyai123456
PGVectorVECTOR_STORE=pgvectorPGVECTOR_HOST=pgvector
PGVECTOR_DATABASE=dify

来源: docker/.env.example403-463 docker/docker-compose.yaml160-186

安全与认证配置

安全配置通过 SecurityConfig 类和各种与认证相关的环境变量进行管理。

认证配置

来源: api/configs/feature/__init__.py18-49 docker/.env.example701-740 docker/.env.example722-740

前端配置

Web前端使用不同的配置方法,基于Next.js环境变量和运行时数据属性。

前端配置流程

来源: web/config/index.ts5-44 web/docker/entrypoint.sh15-38 web/app/layout.tsx36-56

前端配置变量

类别变量目的
API 端点NEXT_PUBLIC_API_PREFIX, NEXT_PUBLIC_PUBLIC_API_PREFIX后端服务 URL
功能控制NEXT_PUBLIC_MAX_TOOLS_NUM, NEXT_PUBLIC_EDITIONUI 功能限制
市场NEXT_PUBLIC_MARKETPLACE_API_PREFIX, NEXT_PUBLIC_MARKETPLACE_URL_PREFIX插件市场集成

来源: web/config/index.ts10-44 web/app/layout.tsx38-56

配置加载与初始化

应用工厂配置加载

来源: api/app_factory.py12-26 api/app_factory.py39-101 api/extensions/ext_storage.py16-20 api/extensions/ext_logging.py13-41

开发 vs 生产配置

特定环境设置

配置开发生产
调试模式DEBUG=true, FLASK_DEBUG=trueDEBUG=false, FLASK_DEBUG=false
部署环境DEPLOY_ENV=DEVELOPMENTDEPLOY_ENV=PRODUCTION
数据库本地 PostgreSQL经过参数调优的生产 PostgreSQL
存储本地文件系统 (OPENDAL_SCHEME=fs)云存储(S3、Azure 等)
日志记录控制台输出带有 LOG_FILE 的文件轮换

配置文件层级

配置系统遵循以下优先顺序

  1. 显式环境变量
  2. .env 文件值
  3. 配置类默认值
  4. Pydantic 字段默认值

来源: docker/.env.example68-96 api/.env.example351-354 api/configs/feature/__init__.py51-68

插件和扩展配置

插件守护进程配置

来源: api/configs/feature/__init__.py141-177 docker/docker-compose.yaml649-704 docker/.env.example453-486

这个全面的配置系统使 Dify 能够适应各种部署场景,同时在分布式服务中保持一致的行为。分层方法确保了特定于环境的设置可以在不进行代码更改的情况下覆盖默认设置。