アーキテクチャの概要
Dify エンタープライズ版は、単一インスタンス・マルチデータベースアーキテクチャを採用しています。すべてのコミュニティ版およびエンタープライズ版サービスは同じデータベースサーバーに接続されますが、各サービスはそれぞれ独立したデータベースを使用します。| データベース | デフォルト名 | 使用コンポーネント |
|---|---|---|
| Dify コア | dify | コミュニティ版 API / Worker / Plugin Daemon, エンタープライズ版サービス |
| エンタープライズ版 | enterprise | dify-enterprise, dify-audit, dify-plugin-manager |
| 監査ログ | audit | dify-audit |
| プラグイン | dify_plugin | Plugin Daemon, dify-plugin-manager |
注意:コミュニティ版サービスとエンタープライズ版サービスでは環境変数の命名規則が異なりますが、必ず同じデータベースインスタンスを指すように設定してください。
Docker Compose 設定
Docker Compose デプロイでは、.env ファイルを編集してデータベースを設定します。
1. 環境変数リファレンス
コミュニティ版サービス (Dify API / Worker)
| 変数名 | 説明 | PostgreSQL デフォルト | MySQL デフォルト |
|---|---|---|---|
DB_TYPE | データベースタイプ | postgresql | mysql |
DB_USERNAME | データベースユーザー名 | postgres | root |
DB_PASSWORD | データベースパスワード | difyai123456 | difyai123456 |
DB_HOST | データベースホスト名 | db_postgres | db_mysql |
DB_PORT | データベースポート | 5432 | 3306 |
DB_DATABASE | Dify コアデータベース名 | dify | dify |
エンタープライズ版サービス
| 変数名 | 説明 | PostgreSQL デフォルト | MySQL/TiDB デフォルト |
|---|---|---|---|
DB_ENGINE | データベースエンジン | postgres | mysql |
DB_HOST | データベースホスト名 | db_postgres | db_mysql |
DB_PORT | データベースポート | 5432 | 3306 / 4000 (TiDB) |
DB_USER | データベースユーザー名 | postgres | root |
DB_PASS | データベースパスワード | difyai123456 | difyai123456 |
DIFY_DB_NAME | Dify コアデータベース名 | dify | dify |
ENTERPRISE_DB_NAME | エンタープライズ版名 | enterprise | enterprise |
AUDIT_DB_NAME | 監査ログデータベース名 | audit | audit |
2. 外部データベースモード
外部データベース(AWS RDS、Google Cloud SQL、TiDB Cloud など)を使用する場合は、以下の手順で設定してください。.env環境変数の変更:上記の変数を外部データベースのアドレスに書き換えます。COMPOSE_PROFILESの調整(任意):内蔵データベースコンテナの起動を防ぐため、COMPOSE_PROFILESからデータベースタイプ(例:postgresql)を削除します。- データベースの手動作成:Dify を起動する前に、外部インスタンスで必要なデータベースを手動で作成する必要があります(詳細は後述のデータベースの初期化を参照)。
Helm Chart 設定
Helm デプロイでは、values.yaml を通じてデータベースを設定します。
1. 内部データベースモード (PostgreSQL)
デフォルトでは、Helm は内蔵の PostgreSQL コンテナを起動します。2. 外部データベースモード (本番環境推奨)
外部の PostgreSQL、MySQL、または TiDB に接続します。データベースの初期化
1. 内部データベースモード
Docker Compose または Helm の内蔵データベースを使用する場合、システムは自動的に初期化スクリプト(dify-postgresql-init.sql など)を実行して enterprise および audit データベースを作成します。
2. 外部データベースモード (手動作成)
外部データベースを使用する場合、Dify を起動する前に以下のデータベースを手動で作成する必要があります。PostgreSQL
MySQL / TiDB
よくある質問 (FAQ)
なぜ 2 組のデータベース変数があるのですか?
コミュニティ版サービス(Python)とエンタープライズ版サービス(Go)で異なる設定規則を使用しているためです。設定時には、両方の変数が同じデータベースインスタンスを指していることを確認してください。TiDB ではどのエンジンを選択すべきですか?
TiDB は MySQL プロトコルと互換性があります。設定時はDB_TYPE と DB_ENGINE を両方 mysql に設定し、ポートを TiDB のサービスポート(デフォルト 4000)に指定してください。
SSL/TLS 接続を有効にするにはどうすればよいですか?
- Docker Compose:
DB_SSL_MODE="require"を設定します。MySQL/TiDB の場合は、さらにDB_TLS="true"を設定してください。 - Helm:
dialectOptions配下の対応するsslModeまたはtlsフィールドを設定します。