[Dify] 1. DockerでDifyを立ち上げる
執筆日
2025/07/19
2025/08/05 追記
概要
今更Dify?と思われるかもしれませんが、僕もそう思います。色々思うところあってオープンソースは便利だけど開発が活発過ぎて大変そう、廃れたときにそれ使い続けるのどうなんだろう、というダブスタな忌避をしていたため、ちょっと触ってなるほどね~くらいにとどめていました。LLM開発も色々と経験してやっぱりPoC段階でどんな運用か固まっていなかったり、LLM性能を試したいだけの時は簡単に試せる環境の提供方法としてDify便利だなあという気持ちになったので今後しばらく簡単な使い方のまとめブログを書いていきたいと思います。
というわけで初回は立ち上げです。ブログに書くほどのことじゃなさすぎる。
前提
- 執筆時 Dify Version latest 1.7.1
- GitとDockerが使えること
- デフォルト設定で、CPU 2 Core以上、RAM 4 GiB 以上が必要になります。
準備
# Difyリポジトリをクローン
git clone https://github.com/langgenius/dify.git
cd ./dify/docker
# デフォルトのenv設定をコピー
cp .env.example .env
# コンテナの立ち上げ(初回はビルドが走ります)
docker compose up -d
アクセス
docker compose up -d
で各サービスが立ち上がったことを確認したら、ブラウザでhttp://localhost/install
にアクセスします。ここで管理者アカウントの設定をします。完了するとhttp://localhost/signin
に移動しますので作成した管理者アカウントでサインインしましょう。
こんな感じでページが表示されます。
感想
久しぶりに立ち上げてアクセスしたら機能が増えててちょっとひるみました。
次回はナレッジベースの作成について。
Tips
あまりにも立ち上げるだけだと意味なしなので少しくらいは補足情報を……。
アカウント追加
ローカルで触るだけの場合や特にアカウントによって権限をいじる必要がない場合は1アカウントで問題ありませんが、ナレッジベースの管理をしたり、複数人でスタジオをいじったりする場合はアカウントを追加する必要があります。
ページ右上のユーザーアイコンから[設定]を選択すると以下のようなポップアップが出るので[招待]を押してメンバーを招待しましょう。生成される招待リンクから承認するとユーザーが追加されます。
メンバーは以下のユーザーロールを設定できます。
-
通常ユーザー
: アプリの使用のみ可能 -
エディター
: アプリの構築が可能 -
管理者
: アプリの構築及びチーム設定の管理が可能
.envの編集
環境変数設定によって様々なオプション機能を使えます。特に注目したいのは様々な検索プラットフォームに対応しているところでしょうか(残念ながらAzure AI Searchを検索に使う設定はない)。検索詳細は以下
クラウドデプロイの場合はVMでなければそれぞれコンテナアプリにデプロイしたりDBサービスを利用したりすることになるので結構大変そうです。2025/08/05 追記 デフォルト設定の場合立ち上がるコンテナ
コンテナ名 | 主な役割 | 備考・依存関係 |
---|---|---|
web |
フロントエンド | http://localhost/install で初回アクセス |
api |
バックエンド | LLM呼び出し、チャット処理、ナレッジ管理など |
worker |
Celery Worker(非同期タスク処理) | チャンク化、埋め込み、ツール呼び出しなど |
plugin-daemon |
プラグイン実行ランタイム(LLMツール処理) | ツールノードや外部APIを扱う際に使用 |
sandbox |
ユーザー入力を安全に処理するための実行サンドボックス | ツールやコード評価時のセーフガード |
ssrf_proxy |
SSRF対策用プロキシ(外部HTTPリクエストの制限) | plugin/sandbox からの外部リクエストを中継 |
nginx |
リバースプロキシ兼静的ファイルサーバー | ポート80で web と api を仲介 |
weaviate |
ベクトル検索エンジン(Vector DB) | ナレッジベースの類似検索に使用 |
redis |
キュー・キャッシュ・セッションストア | Celery(worker)のタスク中継にも使用 |
db |
データベース(PostgreSQL) | アプリ・ユーザー・ドキュメントなどの保存先 |
詳しいデータベース構造を確認するためにローカルからDB viewerアプリを使う場合、composeのデフォルトではポートが解放されていないので設定を追加してからupしてください。
# ~略~
db:
ports:
- "5432:5432"
# ~略~
クラウド上へのデプロイ
上記で環境変数をいじくってデプロイしていくのが大変という人の場合は各クラウドへのデプロイのためのTerraformを作成してくれている人がいます。Azureであれば以下のリポジトリが使えます。(その他はREADME参照)
2025/08/05 追記
こちらのterraformがあまりアップデートされていないためDifyの新しいバージョンに対応していなかったりするためこちらを参考にした方が良さそうです。(こちらはbicep)
フロントエンドとバックエンドで使われるリソースは以下の構成(それ以外にもVNETやストレージなども作成されます)。基本的にコンテナアプリ上にそれぞれのDockerコンテナがデプロイされますが、データベースとキャッシュは専用のサービスでデプロイされる感じですね。
- フロントエンド
- nginx: Azure Container Apps
- バックエンド
- web: Azure Container Apps
- api: Azure Container Apps
- worker: Azure Container Apps (minimum of 1 instance)
- sandbox: Azure Container Apps
- ssrf_proxy: Azure Container Apps
- db: Azure Database for PostgreSQL
- vectordb: Azure Database for PostgreSQL
- redis: Azure Cache for Redis
参考
Discussion