dify-api

henrybit/dify-api Docker 镜像

Dify-API是Dify的API组件,用于K8s部署,作为LLM应用开发平台的核心后端服务,结合后端即服务和LLM运维,内置RAG引擎,支持基于任意LLM独立部署类似Assistants API和GPTs的功能。

下载次数: 0状态:社区镜像维护者:henrybit仓库类型:镜像最近更新:6 个月前
下载命令
点击查看

Dify-API(K8S部署)

[重要!] 如果您想在K8s集群上部署Dify,可以使用本文档。

Dify是一个LLM应用开发平台,已通过Dify.AI帮助创建了超过10万款应用。它结合了后端即服务(Backend as a Service)和LLM运维(LLMOps)的理念,涵盖了开发AI原生应用所需的核心技术栈,并内置了RAG引擎。通过Dify,您可以基于任意LLM独立部署类似Assistants API和GPTs的功能。

1. Dify-API是Dify的API组件

2. 如何使用Dify-API?

  • 如果您的dify-api域名是"[]",dify-web域名是"[]"
  • 向量数据库使用Milvus
  • 数据库使用PostgreSQL
  • 缓存使用Redis
  • 文件存储使用阿里云OSS
  • 当使用Dify版本>=1.0.0时,需要为插件守护进程添加"dify-plugin-daemon"域名,该域名可以是Kubernetes内部域名,此时可通过5002和5003端口进行通信。

api和worker使用同一镜像,只需通过MODE环境变量区分。

2.1 [版本] >= 1.0.0

新版本是重大升级,因此如果您计划更新,请谨慎操作。它移除了旧的模型配置模式,取而代之的是基于插件的策略。此更改将需要对知识库和所有编排节点进行重大调整,尤其是那些使用向量模型、推理模型和排序模型的节点。

引入了新的插件服务来管理本地插件安装。现在插件负责扩展模型、代理和工具等功能。之前版本的所有默认模型设置已被移除,因此您需要在使用前自行安装所需插件。

此外,新版本支持流行的MCP协议,这是大模型生态系统中的关键技术。

2.1.1 api

Kubernetes YAML文件中的环境变量配置如下:

k8s
env:
  - name: SECRET_KEY
    value: "MFnQ128032819024170983219038YYp5A"
  - name: CONSOLE_API_URL
    value: "https://dify-api.xxx.yyy"
  - name: CONSOLE_WEB_URL
    value: "https://dify-web.xxx.yyy"
  - name: SERVICE_API_URL
    value: "https://dify-api.xxx.yyy"
  - name: APP_WEB_URL
    value: "https://dify-web.xxx.yyy"
  - name: CELERY_BROKER_URL
    value: "redis://:[password]@[redis_host]:6379/1"
  - name: REDIS_HOST
    value: "redis"
  - name: REDIS_PORT
    value: 6379
  - name: REDIS_PASSWORD
    value: ""
  - name: DB_USERNAME
    value: ""
  - name: DB_PASSWORD
    value: ""
  - name: DB_HOST
    value: ""
  - name: DB_PORT
    value: 5432
  - name: DB_DATABASE
    value: "dify"
  - name: STORAGE_TYPE
    value: "aliyun-oss"
  - name: ALIYUN_OSS_ENDPOINT
    value: ""
  - name: ALIYUN_OSS_PATH
    value: ""
  - name: ALIYUN_OSS_BUCKET_NAME
    value: ""
  - name: ALIYUN_OSS_ACCESS_KEY
    value: ""
  - name: ALIYUN_OSS_SECRET_KEY
    value: ""
  - name: VECTOR_STORE
    value: "milvus"
  - name: MILVUS_HOST
    value: "my-release-milvus"
  - name: MILVUS_PORT
    value: 19530
    value: "root"
  - name: MILVUS_PASSWORD
    value: ""
  - name: MILVUS_SECURE
    value: false
  - name: WEB_API_CORS_ALLOW_ORIGINS
    value: "*"
  - name: CONSOLE_CORS_ALLOW_ORIGINS
    value: "*"
  - name: MAIL_TYPE
    value: "resend"
  - name: MAIL_DEFAULT_SEND_FROM
    value: ""
  - name: RESEND_API_KEY
    value: ""
  - name: CODE_EXECUTION_ENDPOINT
    value: http://sandbox:8194
  - name: CODE_EXECUTION_API_KEY
    value: "xYaiVMrBUtVppEv6N7cW"
  - name: CODE_MAX_NUMBER
    value: 9223372036854775807
  - name: CODE_MIN_NUMBER
    value: -9223372036854775808
  - name: CODE_MAX_DEPTH
    value: 5
  - name: CODE_MAX_PRECISION
    value: 20
  - name: CODE_MAX_STRING_LENGTH
    value: 80000
  - name: TEMPLATE_TRANSFORM_MAX_LENGTH
    value: 80000
  - name: CODE_MAX_STRING_ARRAY_LENGTH
    value: 30
  - name: CODE_MAX_OBJECT_ARRAY_LENGTH
    value: 30
  - name: CODE_MAX_NUMBER_ARRAY_LENGTH
    value: 1000
  - name: TEMPLATE_TRANSFORM_MAX_LENGTH
    value: 80000
  - name: PLUGIN_REMOTE_INSTALL_HOST
    value: "dify-plugin-daemon"
  - name: PLUGIN_REMOTE_INSTALL_PORT
    value: 5003
  - name: PLUGIN_MAX_PACKAGE_SIZE
    value: 52428800
  - name: INNER_API_KEY_FOR_PLUGIN
    value: "MFnQ128032819024170983219038YYp5A"
  - name: PLUGIN_DAEMON_KEY
    value: "6ovaezWAjpCjf+Sjc3ZtU+qUEi"
  - name: PLUGIN_DAEMON_URL
    value: "http://dify-plugin-daemon:5002"
  • SECRET_KEY - 用于安全签名会话cookie和加密数据库敏感信息的密钥。您可以使用openssl rand -base64 42生成强密钥。

  • CELERY_BROKER_URL - 使用Redis作为broker,Redis数据库1用于Celery broker。示例 - redis://:difyai***@redis:6379/1

  • [数据库示例] -

    • DB_USERNAME - postgres
    • DB_PASSWORD: dify_test123
    • DB_HOST: pgsql_local
    • DB_PORT: 5432
    • DB_DATABASE: dify
  • [Milvus示例] -

    • VECTOR_STORE - milvus
    • MILVUS_HOST: milvus_local
    • MILVUS_PORT: ***
    • MILVUS_USER: root
    • MILVUS_PASSWORD: milvus_test12
  • MILVUS_SECURE - 如果您的Milvus不需要密码,必须设置为false(重要!)

  • MAIL_TYPE - 支持resend或smtp,resend是一个在线邮件服务器,链接为[***]。

  • STORAGE_TYPE - aliyun-oss时,需填写ALIYUN_OSS_ENDPOINT/ALIYUN_OSS_BUCKET_NAME/ALIYUN_OSS_ACCESS_KEY/ALIYUN_OSS_SECRET_KEY这些字段。

  • ALIYUN_OSS_PATH - 版本>=0.8.2时必须设置,这是根路径。

  • CODE_EXECUTION_ENDPOINT - 代码执行沙箱,如果为空,自定义代码执行节点将失败。

  • CODE_EXECUTION_API_KEY - 如果CODE_EXECUTION_ENDPOINT不为空,CODE_EXECUTION_API_KEY必须与dify-sandbox镜像的运行配置相同。

  • PLUGIN_REMOTE_INSTALL_HOST - 插件安装服务的主机,即插件安装服务运行的主机。

  • PLUGIN_REMOTE_INSTALL_PORT - 插件安装服务的端口,即插件安装服务运行的端口。

  • PLUGIN_MAX_PACKAGE_SIZE - 可安装的插件包最大大小,单位为字节。

  • INNER_API_KEY_FOR_PLUGIN - 安装插件时用于身份验证的API密钥,即K8s YAML中插件守护进程环境变量SERVER_KEY的值。

  • PLUGIN_DAEMON_KEY - 与插件守护进程通信时用于身份验证的密钥。

  • PLUGIN_DAEMON_URL - 插件守护进程的URL,用于与插件安装服务通信,可使用插件守护进程服务器的Kubernetes内部域名。

2.1.2 worker

Kubernetes YAML文件中的环境变量配置如下:

k8s
env:
  - name: SECRET_KEY
    value: "MFnQ128032819024170983219038YYp5A"
  - name: CONSOLE_API_URL
    value: "https://dify-api.xxx.yyy"
  - name: CONSOLE_WEB_URL
    value: "https://dify-web.xxx.yyy"
  - name: SERVICE_API_URL
    value: "https://dify-api.xxx.yyy"
  - name: APP_WEB_URL
    value: "https://dify-web.xxx.yyy"
  - name: CELERY_BROKER_URL
    value: "redis://:[password]@[redis_host]:6379/1"
  - name: REDIS_HOST
    value: "redis"
  - name: REDIS_PORT
    value: 6379
  - name: REDIS_PASSWORD
    value: ""
  - name: DB_USERNAME
    value: ""
  - name: DB_PASSWORD
    value: ""
  - name: DB_HOST
    value: ""
  - name: DB_PORT
    value: 5432
  - name: DB_DATABASE
    value: "dify"
  - name: STORAGE_TYPE
    value: "aliyun-oss"
  - name: ALIYUN_OSS_ENDPOINT
    value: ""
  - name: ALIYUN_OSS_PATH
    value: ""
  - name: ALIYUN_OSS_BUCKET_NAME
    value: ""
  - name: ALIYUN_OSS_ACCESS_KEY
    value: ""
  - name: ALIYUN_OSS_SECRET_KEY
    value: ""
  - name: VECTOR_STORE
    value: "milvus"
  - name: MILVUS_HOST
    value: "my-release-milvus"
  - name: MILVUS_PORT
    value: 19530
  - name: MILVUS_USER
    value: "root"
  - name: MILVUS_PASSWORD
    value: ""
  - name: MILVUS_SECURE
    value: false
  - name: WEB_API_CORS_ALLOW_ORIGINS
    value: "*"
  - name: CONSOLE_CORS_ALLOW_ORIGINS
    value: "*"
  - name: MAIL_TYPE
    value: "resend"
  - name: MAIL_DEFAULT_SEND_FROM
    value: ""
  - name: RESEND_API_KEY
    value: ""
  - name: MODE
    value: "worker"
  - name: LOG_LEVEL
    value: "INFO"
  - name: CODE_EXECUTION_ENDPOINT
    value: http://sandbox:8194
  - name: CODE_EXECUTION_API_KEY
    value: "xYaiVMrBUtVppEv6N7cW"
  - name: CODE_MAX_NUMBER
    value: 9223372036854775807
  - name: CODE_MIN_NUMBER
    value: -9223372036854775808
  - name: CODE_MAX_DEPTH
    value: 5
  - name: CODE_MAX_PRECISION
    value: 20
  - name: CODE_MAX_STRING_LENGTH
    value: 80000
  - name: TEMPLATE_TRANSFORM_MAX_LENGTH
    value: 80000
  - name: CODE_MAX_STRING_ARRAY_LENGTH
    value: 30
  - name: CODE_MAX_OBJECT_ARRAY_LENGTH
    value: 30
  - name: CODE_MAX_NUMBER_ARRAY_LENGTH
    value: 1000
  - name: TEMPLATE_TRANSFORM_MAX_LENGTH
    value: 80000000
  - name: INNER_API_KEY_FOR_PLUGIN
    value: "MFnQ128032819024170983219038YYp5A"
  • MODE - 必须设置为"worker"

2.1.3 plugin-daemon

使用此镜像运行plugin-daemon https://hub.docker.com/r/langgenius/dify-plugin-daemon。

建议使用最新版本的plugin-daemon镜像。

测试中version <= 0.0.6-local版本运行良好。

本地部署时,使用带有"local"后缀的版本。

Kubernetes YAML文件中的配置如下:

  • plugin-daemon容器的卷挂载:(必须将卷挂载到plugin-daemon容器,否则当Kubernetes pod重启时插件将丢失。)
k8s
volumeMounts:
    - name: dify-plugin-data
    mountPath: /app/storage
  • plugin-daemon容器的环境变量:
k8s
env:
    - name: SERVER_PORT
      value: 5002
    - name: SERVER_KEY
      value: "6ovaezWAjpCjf+Sjc3ZtU+qUEi"
    - name: GIN_MODE
      value: "release"
    - name: PLATFORM
      value: "local"
    - name: DIFY_INNER_API_KEY
      value: "MFnQ128032819024170983219038YYp5A"
    - name: DIFY_INNER_API_URL
      value: "http://dify-api:5001"
    - name: PLUGIN_REMOTE_INSTALLING_ENABLED
      value: true
    - name: PLUGIN_REMOTE_INSTALLING_HOST
      value: "0.0.0.0"
    - name: PLUGIN_REMOTE_INSTALLING_PORT
      value: "5003"
    - name: PLUGIN_STORAGE_TYPE
      value: "local"
    - name: PLUGIN_STORAGE_OSS_BUCKET
      value: ""
    - name: PLUGIN_STORAGE_LOCAL_ROOT
      value: "/app/storage"
    - name: PLUGIN_INSTALLED_PATH
      value: "/app/storage/plugin"
    - name: PLUGIN_WORKING_PATH
      value: "/app/storage/cwd"
    - name: PERSISTENCE_STORAGE_PATH
      value: "/app/storage/persistence"
    - name: PERSISTENCE_STORAGE_MAX_SIZE
      value: 104857600
    - name: PLUGIN_WEBHOOK_ENABLED
      value: true
    - name: ROUTINE_POOL_SIZE
      value: 1024
    - name: REDIS_HOST
      value: "redis"
    - name: REDIS_PORT
      value: 6379
    - name: REDIS_PASSWORD
      value: "xxxx"
    - name: DB_USERNAME
      value: "dify"
    - name: DB_PASSWORD
      value: "xxx"
    - name: DB_HOST
      value: "xxxxxxx"
    - name: DB_PORT
      value: 5432
    - name: DB_DATABASE
      value: "dify"   
    - name: DIFY_INVOCATION_CONNECTION_IDLE_TIMEOUT
      value: 120
    - name: MAX_PLUGIN_PACKAGE_SIZE
      value: 52428800
    - name: PYTHON_ENV_INIT_TIMEOUT
      value: 120
    - name: PPROF_ENABLED
      value: false
    - name: FORCE_VERIFYING_SIGNATURE
      value: true
  • SERVER_PORT - 插件守护进程服务器监听传入请求的端口,默认端口为5002。
  • SERVER_KEY - 与插件守护进程通信时用于身份验证的密钥。
  • GIN_MODE - Gin Web框架的运行模式,可设置为"release"(生产

镜像拉取方式

您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

轩辕镜像加速拉取命令点我查看更多 dify-api 镜像标签

docker pull docker.xuanyuan.run/henrybit/dify-api:<标签>

DockerHub 原生拉取命令

docker pull henrybit/dify-api:<标签>
专业版 · 高速稳定拉取镜像
50GB 仅 ¥8/年
高速镜像下载在线技术支持专业版保障服务可用付费会员免广告