agentic_huge_data_base / wiki
页面 Dify · 3 部署与操作·DeepWiki 中文全文译文

3 · 部署与操作(Deployment and Operations)

应用编排与外部知识接入 · 本章是 Dify DeepWiki 中文译文的独立章节页,保留原始链接、源码锚点、模块标签和章节层级。

项目Dify 章节3 状态全文译文 模块测试、发布与运维、工作流与编排、安装与启动、存储与持久化
源码线索
  • api/.env.example
  • api/Dockerfile
  • api/app.py
  • api/app_factory.py
  • api/configs/feature/__init__.py
  • api/configs/middleware/__init__.py
  • api/configs/middleware/cache/redis_config.py
  • api/configs/observability/__init__.py
  • api/configs/observability/otel/otel_config.py
  • api/configs/packaging/__init__.py
模块标签
  • 测试、发布与运维
  • 工作流与编排
  • 安装与启动
  • 存储与持久化
  • 配置治理

中文译文

部署与操作(中文译文)

原始 DeepWiki 页面:https://deepwiki.com/langgenius/dify/3-deployment-and-operations
翻译时间:2026-05-27T08:44:40.405Z
翻译模型:deepseek-chat
原文字符数:18100
项目:Dify (dify)

---

部署与运维

相关源文件

以下文件被用作生成此 Wiki 页面的上下文:

  • api/.env.example
  • api/Dockerfile
  • api/app.py
  • api/app_factory.py
  • api/configs/feature/__init__.py
  • api/configs/middleware/__init__.py
  • api/configs/middleware/cache/redis_config.py
  • api/configs/observability/__init__.py
  • api/configs/observability/otel/otel_config.py
  • api/configs/packaging/__init__.py
  • api/controllers/console/datasets/datasets.py
  • api/core/rag/datasource/vdb/vector_factory.py
  • api/core/rag/datasource/vdb/vector_type.py
  • api/extensions/ext_celery.py
  • api/extensions/ext_compress.py
  • api/extensions/ext_otel.py
  • api/extensions/ext_redis.py
  • api/extensions/otel/instrumentation.py
  • api/pyproject.toml
  • api/schedule/queue_monitor_task.py
  • api/schedule/workflow_schedule_task.py
  • api/tests/test_containers_integration_tests/trigger/__init__.py
  • api/tests/test_containers_integration_tests/trigger/conftest.py
  • api/tests/test_containers_integration_tests/trigger/test_trigger_e2e.py
  • api/tests/unit_tests/configs/test_dify_config.py
  • api/tests/unit_tests/core/workflow/graph_engine/test_table_runner.py
  • api/tests/unit_tests/extensions/test_celery_ssl.py
  • api/tests/unit_tests/extensions/test_redis.py
  • api/uv.lock
  • docker/.env.example
  • docker/README.md
  • docker/docker-compose-template.yaml
  • docker/docker-compose.middleware.yaml
  • docker/docker-compose.yaml
  • docker/envs/core-services/shared.env.example
  • docker/envs/infrastructure/nginx.env.example
  • docker/envs/security.env.example
  • docker/nginx/conf.d/default.conf.template
  • web/.env.example
  • web/Dockerfile
  • web/app/layout.tsx
  • web/config/index.ts
  • web/docker/entrypoint.sh
  • web/package.json
  • web/types/feature.ts

---

目的与范围

本文档概述了 Dify 平台的部署策略和运维注意事项,涵盖了在生产环境中部署和运维 Dify 所需的服务架构、部署方法、配置管理和运行时模式。

关于特定主题的详细信息:

关于开发环境设置,参见 开发环境设置。关于系统架构详情,参见 系统架构总览

---

部署架构

Dify 平台由多个容器化服务组成,通过 Docker Compose 或 Kubernetes 进行编排。架构将关注点分离到不同的服务层:表示层(Web)、应用层(API)、后台处理层(Worker/Beat)、执行隔离层(Sandbox)和数据持久化层(数据库)。

服务拓扑
graph TB
    subgraph "入口层"
        Nginx["nginx<br/>(反向代理)<br/>端口 80/443"]
    end

    subgraph "应用层"
        API["api<br/>langgenius/dify-api:1.14.2<br/>MODE=api<br/>端口 5001"]
        Web["web<br/>langgenius/dify-web:1.14.2<br/>端口 3000"]
    end

    subgraph "处理层"
        Worker["worker<br/>langgenius/dify-api:1.14.2<br/>MODE=worker<br/>CELERY_WORKER_AMOUNT"]
        WorkerBeat["worker_beat<br/>langgenius/dify-api:1.14.2<br/>MODE=beat"]
    end

    subgraph "执行层"
        Sandbox["sandbox<br/>langgenius/dify-sandbox:0.2.15<br/>端口 8194<br/>API_KEY"]
        PluginDaemon["plugin_daemon<br/>langgenius/dify-plugin-daemon:0.6.1-local<br/>端口 5002"]
    end

    subgraph "数据层"
        DBPostgres["db_postgres<br/>postgres:15-alpine<br/>端口 5432<br/>PGDATA"]
        DBMySQL["db_mysql<br/>mysql:8.0<br/>端口 3306<br/>(可选)"]
        Redis["redis<br/>redis:6-alpine<br/>端口 6379<br/>REDIS_PASSWORD"]
    end

    subgraph "网络隔离"
        SSRFProxy["ssrf_proxy<br/>squid<br/>端口 3128"]
    end

    Nginx --> Web
    Nginx --> API

    API --> DBPostgres
    API --> DBMySQL
    API --> Redis
    API --> Sandbox
    API --> PluginDaemon

    Worker --> DBPostgres
    Worker --> DBMySQL
    Worker --> Redis

    WorkerBeat --> Redis

    Sandbox --> SSRFProxy
    API --> SSRFProxy

    Web -.CONSOLE_API_URL.-> API

服务依赖与启动顺序

graph TB
    InitPermissions["init_permissions<br/>busybox:latest<br/>chown -R 1001:1001"]

    DBPostgres["db_postgres<br/>健康检查: pg_isready"]
    DBMySQL["db_mysql<br/>健康检查: SELECT 1"]
    Redis["redis<br/>健康检查: redis-cli ping"]

    API["api<br/>depends_on:<br/>- init_permissions<br/>- db_postgres/db_mysql<br/>- redis"]
    Worker["worker<br/>depends_on:<br/>- init_permissions<br/>- db_postgres/db_mysql<br/>- redis"]
    WorkerBeat["worker_beat<br/>depends_on:<br/>- init_permissions<br/>- db_postgres/db_mysql<br/>- redis"]

    InitPermissions -->|service_completed_successfully| API
    InitPermissions -->|service_completed_successfully| Worker
    InitPermissions -->|service_completed_successfully| WorkerBeat

    DBPostgres -->|service_healthy| API
    DBPostgres -->|service_healthy| Worker
    DBPostgres -->|service_healthy| WorkerBeat

    DBMySQL -->|service_healthy| API
    DBMySQL -->|service_healthy| Worker
    DBMySQL -->|service_healthy| WorkerBeat

    Redis -->|service_started| API
    Redis -->|service_started| Worker
    Redis -->|service_started| WorkerBeat

来源:docker/docker-compose-template.yaml:1-152, docker/docker-compose.yaml:1-115, docker/docker-compose.middleware.yaml:1-128

---

部署方法

Docker Compose 部署

Docker Compose 是开发、测试和小规模生产部署的推荐方法。平台提供了预配置的 Compose 文件,用于编排所有必要的服务。

关键文件

  • docker/docker-compose.yaml - 自动生成的主 Compose 文件 docker/docker-compose.yaml:1-5
  • docker/docker-compose-template.yaml - 用于生成的模板 docker/docker-compose-template.yaml:1-2
  • docker/docker-compose.middleware.yaml - 仅中间件服务 docker/docker-compose.middleware.yaml:1-103
  • docker/.env.example - 环境配置模板 docker/.env.example:1-150

部署步骤

  1. 配置:复制并自定义环境文件
   cp docker/.env.example docker/.env
  1. 数据库选择:通过 Docker Compose 配置文件选择数据库 docker/docker-compose.middleware.yaml:5-7
  2. - PostgreSQL:--profile postgresql(默认) - MySQL:--profile mysql

  1. 服务启动:启动服务及其依赖
   docker compose --profile postgresql up -d

服务配置文件

配置文件服务使用场景
postgresqldb_postgres, api, worker, worker_beat, web, redis, sandbox, plugin_daemon默认生产环境设置 docker/docker-compose.middleware.yaml:7
mysqldb_mysql, api, worker, worker_beat, web, redis, sandbox, plugin_daemon基于 MySQL 的部署 docker/docker-compose.middleware.yaml:46

来源:docker/docker-compose-template.yaml:184-210, docker/docker-compose.middleware.yaml:1-100

---

服务组件

API 服务(api

API 服务是主要的应用服务器,处理来自控制台(管理端)和服务(运行时)接口的 HTTP 请求。

容器配置

  • 镜像langgenius/dify-api:1.14.2 api/pyproject.toml:3
  • 运行时模式MODE: api docker/docker-compose-template.yaml:30
  • 端口5001(可通过 DIFY_PORT 配置)docker/.env.example:54
  • 进程管理器:使用 gevent 工作模式的 Gunicorn api/pyproject.toml:14-18
  • 工作进程数量:由 SERVER_WORKER_AMOUNT 控制 docker/.env.example:55

启动流程(从入口点开始):

graph LR
    Start["entrypoint.sh"] --> CheckMode{"MODE == 'api'?"}
    CheckMode -->|是| Migration["flask db upgrade<br/>(如果 MIGRATION_ENABLED)"]
    Migration --> StartGunicorn["gunicorn<br/>--bind $DIFY_BIND_ADDRESS:$DIFY_PORT<br/>--workers $SERVER_WORKER_AMOUNT<br/>--worker-class $SERVER_WORKER_CLASS<br/>app:app"]
    CheckMode -->|否| OtherMode["worker/beat/job 模式"]

    StartGunicorn --> APIReady["API 就绪<br/>监听 0.0.0.0:5001"]

关键环境变量

变量默认值用途
MODEapi决定服务行为 docker/docker-compose-template.yaml:30
DIFY_PORT5001API 服务端口 docker/.env.example:54
SERVER_WORKER_AMOUNT1Gunicorn 工作进程数量 docker/.env.example:55
SERVER_WORKER_CLASSgevent工作进程类型(sync/gevent/solo)docker/.env.example:56
GUNICORN_TIMEOUT360请求超时时间(秒)docker/.env.example:61
MIGRATION_ENABLEDtrue启动时自动运行数据库迁移 docker/.env.example:37

来源:api/Dockerfile:113-122, docker/docker-compose-template.yaml:22-68, docker/.env.example:1-70

Worker 服务(worker

Worker 服务使用 Celery 处理异步后台任务,从多个专用队列中消费消息。

容器配置

  • 镜像langgenius/dify-api:1.14.2 api/pyproject.toml:3
  • 运行时模式MODE: worker docker/docker-compose-template.yaml:78
  • 工作进程类:由 CELERY_WORKER_CLASS 控制 docker/.env.example:62

队列架构

graph LR
    Redis["Redis<br/>CELERY_BROKER_URL<br/>端口 6379"] --> Queue1["dataset 队列<br/>(文档索引)"]
    Redis --> Queue2["generation 队列<br/>(大语言模型处理)"]
    Redis --> Queue3["mail 队列<br/>(邮件发送)"]
    Redis --> Queue4["ops_trace 队列<br/>(追踪数据)"]
    Redis --> Queue5["dataset_summary 队列<br/>(摘要生成)"]

    Queue1 --> Worker["Celery Worker<br/>CELERY_WORKER_AMOUNT"]
    Queue2 --> Worker
    Queue3 --> Worker
    Queue4 --> Worker
    Queue5 --> Worker

Worker 扩缩容配置

变量默认值用途
CELERY_WORKER_AMOUNT4固定工作进程数量 docker/.env.example:63
CELERY_AUTO_SCALEfalse启用自动扩缩容 docker/.env.example:64
CELERY_MAX_WORKERS未设置自动扩缩容时的最大工作进程数 docker/.env.example:65
CELERY_MIN_WORKERS未设置自动扩缩容时的最小工作进程数 docker/.env.example:66

来源:docker/docker-compose-template.yaml:69-114, docker/.env.example:62-70, api/pyproject.toml:10

Worker Beat 服务(worker_beat

Beat 服务使用 Celery Beat 提供定时任务执行功能,用于周期性后台作业。

容器配置

  • 镜像langgenius/dify-api:1.14.2 api/pyproject.toml:3
  • 运行时模式MODE: beat docker/docker-compose-template.yaml:124

Beat 服务只需要 Redis 连接,不处理请求。每个部署应只运行一个 Beat 实例,以避免重复的任务调度。

来源:docker/docker-compose-template.yaml:115-152

Web 服务(web

Web 服务提供 Next.js 前端应用,用于控制台和最终用户界面。

容器配置

  • 镜像langgenius/dify-web:1.14.2 web/package.json:4
  • 框架:Next.js(通过 next build 构建)web/package.json:27
  • 端口3000(默认)
  • Node 版本:22.x api/Dockerfile:55

环境变量映射: Web 容器在运行时将后端环境变量映射到 Next.js 变量,包括 CONSOLE_API_URLAPP_API_URL docker/docker-compose-template.yaml:158-159

来源:web/package.json:1-50, docker/docker-compose-template.yaml:153-182

Sandbox 服务(sandbox

Sandbox 服务为工作流代码节点和工具操作提供隔离的代码执行环境。

容器配置

  • 镜像langgenius/dify-sandbox:0.2.15 docker/docker-compose.middleware.yaml:106
  • 端口8194 docker/docker-compose.middleware.yaml:120
  • API 认证API_KEY docker/docker-compose.middleware.yaml:114

关键安全参数

变量默认值用途
API_KEYdify-sandbox认证令牌 docker/docker-compose.middleware.yaml:114
WORKER_TIMEOUT15最大执行时间(秒)docker/docker-compose.middleware.yaml:116
ENABLE_NETWORKtrue允许网络访问 docker/docker-compose.middleware.yaml:117

来源:docker/docker-compose.middleware.yaml:105-128, api/configs/feature/__init__.py:103-116

插件守护进程服务(plugin_daemon

插件守护进程在隔离环境中管理插件的生命周期、安装和执行。

容器配置

  • 镜像langgenius/dify-plugin-daemon:0.6.1-local docker/docker-compose.middleware.yaml:132
  • 端口5002 docker/docker-compose.middleware.yaml:145
  • 数据库DB_DATABASE docker/docker-compose.middleware.yaml:141

来源:docker/docker-compose.middleware.yaml:131-180, docker/.env.example:209-213

---

配置管理

配置层级

Dify 平台使用基于 Pydantic 校验的分层配置系统 api/configs/feature/__init__.py:15-17

配置类

文件用途
SecurityConfigapi/configs/feature/__init__.py:20-76认证、令牌、速率限制
AppExecutionConfigapi/configs/feature/__init__.py:78-101执行超时、活跃请求限制
CodeExecutionSandboxConfigapi/configs/feature/__init__.py:103-191Sandbox 连接、限制
关键配置变量

安全

SECRET_KEY=<openssl rand -base64 42>  # 会话签名、加密 [api/configs/feature/__init__.py:25-30]()

数据库

DB_TYPE=postgresql                     # [docker/.env.example:72]()
DB_USERNAME=postgres                   # [docker/.env.example:73]()
DB_PASSWORD=difyai123456               # [docker/.env.example:74]()
DB_HOST=db_postgres                    # [docker/.env.example:75]()
DB_PORT=5432                           # [docker/.env.example:76]()

Redis

REDIS_HOST=redis                       # [docker/.env.example:96]()
REDIS_PORT=6379                        # [docker/.env.example:97]()
REDIS_PASSWORD=difyai123456            # [docker/.env.example:99]()

来源:docker/.env.example:1-110, api/configs/feature/__init__.py:1-210

---

卷管理

持久化数据卷

Docker Compose 部署使用宿主机挂载卷来实现数据持久化。

卷映射

宿主机路径容器路径服务用途
./volumes/db/data/var/lib/postgresql/datadb_postgres数据库数据 docker/docker-compose.middleware.yaml:24
./volumes/app/storage/app/api/storageapi, worker用户文件 docker/docker-compose-template.yaml:217

权限初始化init_permissions 服务确保在应用启动前,挂载卷具有正确的所有权(1001:1001docker/docker-compose-template.yaml:202-218

来源:docker/docker-compose-template.yaml:3-220, api/Dockerfile:54-60

---

日志与可观测性

日志配置
变量默认值用途
LOG_LEVELINFO日志级别 docker/.env.example:43
LOG_OUTPUT_FORMATtext文本或 JSON 格式 docker/.env.example:44
LOG_FILE/app/logs/server.log日志持久化 docker/.env.example:45
OpenTelemetry 集成

Dify 支持通过多个检测包使用 OpenTelemetry 进行分布式追踪和指标收集 api/pyproject.toml:35-41

来源:docker/.env.example:43-49, api/pyproject.toml:35-41