Dify 使ってますか?ワークフローを作れて、可能性が広がる素敵なツールです。
そんな Dify を local で立ち上げようとしたら、初手からつまづきました。Mac 環境で同様の事象が起きる可能性があるため、ログを残しておきます。
事象
公式の Github によれば、
cd docker cp .env.example .env docker compose up -d
と、何も労せず立ち上がるとのことです。
実際、過去に Ubuntu 環境で動かした際は問題ありませんでした。しかし、今回 Mac で同様に実行したところ、
api-1 | ERROR [root] Database migration failed, error: (psycopg2.OperationalError) connection to server at "localhost" (127.0.0.1), port 5432 failed: Connection refused api-1 | Is the server running on that host and accepting TCP/IP connections? api-1 | connection to server at "localhost" (::1), port 5432 failed: Cannot assign requested address api-1 | Is the server running on that host and accepting TCP/IP connections?
と表示されました。
flask_migrate というライブラリを使って migration する時に、そもそも DB に繋がらなくてエラーになっているようです。
調査ログと解決法
DB が上がっているかの確認
docker/docker-compose.yml に変更を加え、
db:
...
ports:
- "${EXPOSE_DB_PORT:-5432}:5432"
と、host マシンからアクセスできるようにして、接続可能かを確認します。
docker compose で立ち上げたのち、
% psql -h localhost -p 5432 -U postgres Password for user postgres: psql: error: connection to server at "localhost" (::1), port 5432 failed: FATAL: password authentication failed for user "postgres"
ここで、password としては docker-compose に記載の difyai123456 を入力しましたが、認証失敗と出てしまいました。
そこで、今度はためしに postgres db のデフォルトのパスワード postgres で ログインしてみることにします。
% psql -h localhost -p 5432 -U postgres Password for user postgres: psql (15.5 (Homebrew), server 15.8) Type "help" for help. postgres=#
成功しました。
password はファイルに記載の値ではないかもしれませんが、DB は立ち上がって動作していることが確認できました。
解決
Mac 環境では docker の動作や環境変数の受け渡しに違いが生まれる経験があったので、ここまでの調査から、なんとなくあたりはついていました。
DB は立ち上がっているが connection エラーになるということは、host の解決がうまくいっていない可能性が高いです
docker/docker-compose.yaml にて、
DB_HOST: db
と書き換えて再度 docker-compose up すると、今度はエラーが出ずに立ち上がりました。
その他
調査の過程でパスワードの書き換えも行っていたが、不要だったようです。
その他、一応下記の要件を満たしているかは確認していたほうがよいかと思います。
- CPU >= 2 Core
- RAM >= 4GB