はじめに
Difyをローカル環境でDockerを使って立ち上げようと思い立った。 AIアプリケーション開発プラットフォームということで、手元で試してみたかったのだ。
というわけで、dify-myselfというフォルダを作って、自分で環境構築を始めることにした。
試行錯誤の始まり:バックエンド編
まずはAPIサーバーから立ち上げようと思った。
make api-worker
エラー。
cd api && uv sync
make api-worker
またエラー。
仮想環境が壊れているのかと思い、思い切って削除。
cd api && rm -rf .venv && uv sync
さらに、api/app.pyを直接編集してGunicornとCeleryの設定を調整。 catコマンドでファイルを上書きして…
make api-worker
何度目かのmake api-worker。 uv syncとmake api-workerを繰り返すこと十数回。
フロントエンド編:Node.jsとの戦い
バックエンドで疲弊した後は、フロントエンドの番だ。
まずNode.jsのバージョンを合わせる必要があった。 nvmをインストールして、Node.js 22.11.0をセットアップ。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.zshrc
nvm install 22.11.0
nvm use 22.11.0
nvm alias default 22.11.0
次にpnpmをインストール。
npm install -g pnpm
cd /Users/ryusei/dev-environment/dify-myself/web
pnpm install
そして満を持して…
make web-dev
エラー。またpnpm install。またmake web-dev。
この繰り返し。
オチ
そんなこんなで数時間が経過したころ、ふと思った。
「そういえば、公式リポジトリってどうなってるんだろう?」
Difyの公式GitHubリポジトリからzipをダウンロード。 dify-main.zipを解凍して、おそるおそるdockerフォルダに入る。
cd dify-main/docker
docker-compose up -d
ターミナルに流れるログ。
Creating dify-postgres ... done
Creating dify-redis ... done
Creating dify-weaviate ... done
全部立ち上がった。
PostgreSQL、Redis、Weaviate、全てhealthyステータス。
今までの苦労は一体…?
Cursorでdify-mainを開いて、中身を眺める。 自分が手動で書こうとしていた設定が、完璧に用意されている。
学んだこと
技術的な学びとしては:
- 公式ドキュメントを最初に確認すべし
- 車輪の再発明をする必要はない
- 公式が用意しているセットアップ手順は、大抵よく考えられている
git cloneより先に自分で実装しようとするのは時期尚早
- とはいえ無駄ではない
uvによるPython環境管理を学んだnvmによるNode.jsバージョン管理を実践できたpnpmを使ったモノレポ構成に触れた- Makefileによるタスク管理の便利さを実感
- Docker Composeでのマルチコンテナ構成(PostgreSQL、Redis、Weaviate)を理解
- トラブルシューティングの経験値は確実に上がった
- 具体的に得たスキル
.venvの削除と再構築というトラブルシューティング手法- catコマンドでのファイル上書きテクニック(良い手法かは置いといて)
makeコマンドを何度も叩く忍耐力- シェル履歴を見返して「自分は何をやっていたのか」と振り返る力
- 遠回りも悪くない
- すぐに動いたら「なぜ動くのか」を考えなかったかもしれない
- 苦労したからこそ、公式のDocker Compose設定の完成度がわかる
- エラーと向き合う時間は、決して無駄ではない
まとめ
結論:公式リポジトリを最初に見よう。
dify-myselfというフォルダで数時間格闘した結果、 dify-main.zipをダウンロードしてdocker-compose up -dするだけで終わった。
これが開発の現実だ。
でも、遠回りした時間も決して無駄ではない。
- uvを学んだ
- nvmを学んだ
- pnpmを学んだ
- makeを何度も叩いた
- .venvを削除する勇気を得た
そして何より、「公式リポジトリの偉大さ」を身をもって知った。
この記事を読んでいるあなたは、私と同じ遠回りをする必要はない。 でも、もし遠回りしたなら、それはそれで良い経験になる。
さあ、Difyの公式リポジトリをダウンロードして、素晴らしいAIアプリケーション開発を始めよう!
(dify-myselfフォルダは…そっとしておこう)
教訓: docker-compose up -dの前にmake api-workerを100回叩く必要はない
