十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Dify 高级部署实践:.env 自定义配置、Grafana 指标监控与 Kubernetes/Terraform/云平台部署方案

Dify 高级部署实践:.env 自定义配置、Grafana 指标监控与 Kubernetes/Terraform/云平台部署方案 Dify 高级部署实践.env 自定义配置、Grafana 指标监控与 Kubernetes/Terraform/云平台部署方案【免费下载链接】difyBuild Agentic workflows, RAG pipelines, with rich AI model and tool support on one collaborative workspace. Deploy on cloud, VPC, or self-hosted, so teams move from prototype to production without rebuilding the stack.项目地址: https://gitcode.com/GitHub_Trending/di/dify本篇技术指南基于 Dify 仓库中的高级部署文档docs/sl-SI/ADVANCED_SETUP.md其英文版见 docs/ADVANCED_SETUP.md讲解自托管 Dify 时的三类进阶操作如何在不破坏默认部署的前提下定制docker/.env与 Compose 配置、如何用 Grafana 结合 PostgreSQL 做指标监控以及如何通过社区 Helm Chart、Terraform、AWS CDK、Sealos 等方案完成 Kubernetes 与云平台的部署。读完本文你可以独立完成从“改一个环境变量到换向量数据库”再到“上 K8s 高可用架构”的完整进阶部署链路。自定义配置以 .env 为中心的三层配置体系高级部署文档给出的核心操作指令是需要定制配置时修改docker/.env文件参照.env.example中的注释更新对应值如有必要还可调整docker-compose.yaml如镜像版本、端口映射、卷挂载任何修改完成后在docker目录下重新执行docker compose up -d。结合当前仓库这套“基础默认 本地覆盖 主题化高级配置”的三层结构在 docker/README.md 中有明确定义docker/.env.example仅包含启动默认部署所必需的变量essential startup defaults。文件头部注释明确要求不要向其中添加可选变量docker/.env.exampledocker/.env本地启动值由.env.example复制而来承载你的本地修改docker/envs/*.env.example按主题分组的可选高级配置。需要时去掉.example后缀复制为同名文件即可生效。一个关键的优先级规则Docker Compose 先读取envs/*.env文件最后读取.env因此.env中的值优先级最高docker/README.md。这解释了.env.example头部注释“docker/.env的值覆盖docker/envs/*.env”的含义docker/.env.example。docker/envs/ 目录的主题化组织当前仓库将高级配置拆分为四个子目录按主题就近管理避免单个巨型 env 文件docker/envs/core-services/api.env.example、worker.env.example、worker-beat.env.example、web.env.example、sandbox.env.example、plugin-daemon.env.example、dify-agent.env.example等核心服务变量其中 shared.env.example 是 API/Worker 共享配置系统开关、Sentry、邮件、工作流限制、SSRF 代理、存储后端、向量库连接等docker/envs/databases/db-postgres.env.example、db-mysql.env.example、redis.env.exampledocker/envs/vectorstores/17 种向量库的独立配置模板包括weaviate、qdrant、milvus、pgvector、opensearch、elasticsearch、chroma、couchbase、oceanbase、oracle、seekdb等docker/envs/infrastructure/nginx、certbot、ssrf-proxy、etcd、minio、milvus-standalone等基础设施变量另有根级 middleware.env.example 与 security.env.example。根 .env.example 中的关键启动变量.env.example 是 300 行左右的可运行基线以下是 docker/README.md 归纳的各配置组与典型变量取值范围与默认值以仓库文件为准配置组关键变量默认值取自 .env.example说明服务 URLCONSOLE_API_URL、CONSOLE_WEB_URL、SERVICE_API_URL、APP_API_URL、APP_WEB_URL、FILES_URL、INTERNAL_FILES_URL控制台/API/前端/文件的公网与内网基础地址SERVER_CONSOLE_API_URL保持默认http://api:5001仅在服务需经其他内网地址访问 API 时修改运行时与安全SECRET_KEY空、INIT_PASSWORD空、DEPLOY_ENVPRODUCTIONSECRET_KEY留空时 Dify 会在存储目录自动生成并持久化密钥建议生产环境显式设置强密钥日志与 WorkerLOG_LEVELINFO、DEBUGfalse、FLASK_DEBUGfalse、SERVER_WORKER_AMOUNT1、CELERY_WORKER_AMOUNT4、GUNICORN_TIMEOUT360Gunicorn/Celery 的进程数与超时CELERY_AUTO_SCALE、CELERY_MAX_WORKERS/MIN_WORKERS用于弹性伸缩数据库DB_TYPEpostgresql、DB_USERNAMEpostgres、DB_PASSWORDdifyai123456、DB_HOSTdb_postgres、SQLALCHEMY_POOL_SIZE30生产环境务必修改默认密码SQLALCHEMY_*控制连接池POSTGRES_MAX_CONNECTIONS200等调优 PostgreSQL 自身Redis 与 CeleryREDIS_HOSTredis、REDIS_PORT6379、REDIS_DB0、REDIS_KEY_PREFIX空REDIS_KEY_PREFIX可为 Redis 键、Topic、Stream 及 Celery 传输产物统一加命名空间前缀便于多实例共存存储STORAGE_TYPEopendal、OPENDAL_SCHEMEfs、OPENDAL_FS_ROOTstorage默认本地文件系统S3/Azure Blob/GCS/阿里云 OSS 等对象存储后端从envs/对应文件配置向量数据库VECTOR_STOREweaviate、WEAVIATE_ENDPOINT、WEAVIATE_API_KEY通过VECTOR_STORE一键切换见下文协作模式ENABLE_COLLABORATION_MODEtrue、COMPOSE_PROFILES从COMPOSE_PROFILES中移除collaboration即可停掉专用 websocket 服务切换向量数据库VECTOR_STORE Compose Profile 联动向量库切换是高级配置中最高频的操作。默认部署内置 Weaviate从源码结构看其联动机制是shared.env.example中的 profile 表达式会根据VECTOR_STORE与DB_TYPE自动激活对应服务docker/envs/core-services/shared.env.example# docker/envs/core-services/shared.env.example 第 464 行 COMPOSE_PROFILES${VECTOR_STORE:-weaviate},${DB_TYPE:-postgresql},collaboration实操步骤依据 docker/README.md将.env中的VECTOR_STORE改为目标库名如milvus、pgvector、qdrant、opensearch按需复制对应模板cp docker/envs/vectorstores/milvus.env.example docker/envs/vectorstores/milvus.env再在其中填写MILVUS_URI等连接参数重新执行docker compose up -d。当前仓库 docker/envs/vectorstores/ 支持的选项包括chroma、couchbase、elasticsearch、iris、matrixone、milvus、myscale、oceanbase、opengauss、opensearch、oracle、pgvecto-rs、pgvector、qdrant、seekdb、vastbase、weaviate等 17 种覆盖自建与云托管两类形态。关于“直接改 docker-compose.yaml”的重要提示sl-SI 文档提到“可能需要调整 docker-compose.yaml 文件镜像版本、端口映射、卷挂载等”。需要结合当前仓库结构补充一点仓库中的 docker-compose.yaml 是由generate_docker_compose自动生成的文件头部带有明确警告# # WARNING: This file is auto-generated by generate_docker_compose # Do not modify this file directly. Instead, update the .env.example # or docker-compose-template.yaml and regenerate this file. # 因此从源码结构看更稳妥的定制路径是镜像版本、环境变量引用等改动落到docker/.env.example或 docker-compose-template.yaml 后重新生成纯运行期参数端口暴露、URL、密码等则优先通过.env/envs/*.env覆盖。端口类需求大多可借助EXPOSE_NGINX_PORT、EXPOSE_NGINX_SSL_PORT等变量完成见 shared.env.example。Dify Docker Compose 服务拓扑源自仓库 docker 目录的部署结构图版本升级时的环境变量同步升级到新版本后.env.example可能引入新的必要变量。仓库提供 dify-env-sync.sh含 Python 版 dify-env-sync.py做单向同步.env.example→.env绝不自动覆盖你已有的自定义值。其行为规范见 docker/README.md变更前先把.env备份到env-backup/目录带时间戳文件名如.env.backup_20231218_143022只同步.env.example中新增的变量展示被移除变量供人工复核# 首次使用赋予执行权限 chmod x dify-env-sync.sh # 执行同步 ./dify-env-sync.sh适用场景升级 Dify 后维护完整.env、.env.example更新了大量新变量、或.env规模大且高度定制。若从docker-legacy迁移docker/README.md 还提醒需把对ssrf_proxy/squid.conf、nginx/conf.d/default.conf等文件的旧自定义映射回新的.env体系并做好数据库与缓存数据迁移。用 Grafana 监控 Dify 指标文档的第二部分给出了指标监控方案在 Grafana 中导入社区仪表盘使用 Dify 的 PostgreSQL 数据库作为数据源即可按应用apps、租户tenants、消息messages等粒度监控运行指标。社区仪表盘项目为 bowenliang123 的dify-grafana-dashboard仓库外部贡献以 PostgreSQL 为查询源因此前提是 Grafana 能连通你的 PostgreSQL 实例。从源码结构看Dify 自身也内置了两条可观测性通道可与 Grafana 方案互补OpenTelemetry 通道复制docker/envs/core-services/shared.env.example为shared.env设置ENABLE_OTELtrue并配置OTLP_BASE_ENDPOINT即可接入 OTLP 采集端点其余OTEL_*参数采样率、批量导出间隔、队列上限等在同文件中调节docker/README.md、shared.env.example变量默认值含义ENABLE_OTELfalse是否在 api 中启用 OpenTelemetry 采集器OTLP_BASE_ENDPOINThttp://localhost:4318OTLP 导出端点OTEL_EXPORTER_TYPEotlp导出器类型OTEL_SAMPLING_RATE0.1采样率OTEL_BATCH_EXPORT_SCHEDULE_DELAY5000批量导出调度延迟msOTEL_MAX_QUEUE_SIZE/OTEL_MAX_EXPORT_BATCH_SIZE2048/512导出队列与批大小上限OTEL_METRIC_EXPORT_INTERVAL60000指标导出间隔ms队列监控告警QUEUE_MONITOR_THRESHOLD200、QUEUE_MONITOR_ALERT_EMAILS、QUEUE_MONITOR_INTERVAL30控制 Celery 队列积压阈值与邮件告警shared.env.example对应实现见 api/schedule/queue_monitor_task.py。高可用部署Kubernetes 与社区 Helm Chart文档指出若需要高可用highly available配置社区贡献了 Helm Chart 与 YAML 文件可把 Dify 部署到 Kubernetes。sl-SI 文档列举的资源均为仓库外部项目使用时需自行核对与当前 Dify 版本的兼容性方案贡献者/项目说明Helm ChartLeoQuotedouban/charts 中的 dify社区 Helm ChartHelm ChartBorisPolonskydify-helm社区 Helm ChartYAML 文件Winson-030dify-kubernetes原生 K8s YAMLYAML 文件wyy-holdingdify-k8s原生 K8s YAMLYAML 文件ZhoneymDifyAI-Kubernetes标注支持 Dify v1.6.0云平台一键部署Terraform 与 AWS CDKTerraform 部署文档提供了两条 Terraform 路径用于把 Dify“一键”部署到云平台Azure Globalnikawang 的dify-azure-terraformGoogle CloudsotazumDeNA 组织的dify-google-cloud-terraform。AWS CDK 部署通过 AWS CDKCloud Development Kit部署到 AWS文档列出了两种架构路线EKS 路线KevinZhao 的 AWS 示例方案solution-for-deploying-dify-on-awsECS 路线tmokmss 的 dify-self-hosted-on-aws。阿里云方案Alibaba Cloud Computing Nest计算巢通过计算巢服务实例页面一键创建 Dify 社区版实例Alibaba Cloud Data ManagementDMS官方提供的 Dify 邀请制预览invitational preview一键部署入口。其他托管路线AKS Azure DevOps PipelineLeoZhang 贡献的 Helm Chart可经 Azure DevOps Pipeline 一键部署到 AKSAzure Kubernetes ServiceSealos通过 Sealos App Store 一键部署 Dify。适用前提与小结所有docker compose操作的前提是系统已安装 Docker 且Docker Compose ≥ v2.24.0docker/README.md修改配置后统一在docker目录执行docker compose up -d生效.env覆盖envs/*.envenvs/内先加载、.env最后加载docker-compose.yaml属自动生成产物定制请走.env.example/docker-compose-template.yaml再重新生成generate_docker_composeK8s、Terraform、CDK、Sealos 等均为仓库外部社区/云厂商资源仓库只记录其存在与入口版本适配性需在使用前自行验证升级 Dify 后建议先跑dify-env-sync.sh对齐新增必要变量再重启 Compose 栈。【免费下载链接】difyBuild Agentic workflows, RAG pipelines, with rich AI model and tool support on one collaborative workspace. Deploy on cloud, VPC, or self-hosted, so teams move from prototype to production without rebuilding the stack.项目地址: https://gitcode.com/GitHub_Trending/di/dify创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表