🤖

Dify Community版をMacのRancher Desktop上で動かす

2024/06/23に公開

Dify 0.6.11をローカル環境にインストールし、起動してみました。Docker Desktopの場合はスムーズに動くみたいなのですが、Rancher Desktopを利用している場合は、普通にdocker compose upしただけでは、エラーとなり起動できません。ここでは正しく動作させるための手順を記載します。

利用したDify Versionは 0.6.11です。

要約

  • Rancher DesktopではTreafikがport 80/443で動作しているため、デフォルトポートを変更する必要がある。
  • Rancher Desktopでpostgresqlを起動すると、データファイルのChownでエラーになり起動しない。これを回避するために、Rancher Desktopの設定を変更する必要がある。

Dify起動手順

1. Difyリポジトリのクローン

まずDifyリポジトリをクローンします。常にheadを試したいとかでなければ、最新リリースのタグを使っておくのが良いと思います。ここでは 0.6.11 タグに切り替えています。チェックアウトが完了したら、docker関係のファイルが置いてある dify/docker ディレクトリに移っておきます。

git clone https://github.com/langgenius/dify.git
git checkout -b <自分で決めたブランチ名> refs/tags/0.6.11
cd dify/docker

2. Docker Composeファイルの修正

Rancherではk3sクラスタのルーティングのためにTreafikというコンポーネントを利用していますが、これが80/443ポートを利用しています。このままだとポートが重複してしまうため、Docker Composeファイル (docker-compose.yaml) のnginxの転送ポートの指定を書き換えます。ここでは公開ポートを8888にしています。

@@ -510,7 +510,7 @@ services:
       - api
       - web
     ports:
-      - "80:80"
+      - "8888:80"
       #- "443:443"

3. Rancher Desktopの設定変更

この状態で普通にdocker compose upすると、docker-db-1コンテナが再起動を繰り返します。docker logs でログを見ると

chown: /var/lib/postgresql/data/pgdata: Permission denied
chown: /var/lib/postgresql/data/pgdata: Permission denied
chown: /var/lib/postgresql/data/pgdata: Permission denied

このようなエラーが出力されています。こちらはRancher Desktopの固有の問題のようで、GithubにIssueが上がっています。Issueのディスカッションの中に記載されていた設定変更で修正することができたので、そちらの設定を記載します。

Rancher Desktopの設定画面を開き(メニューバーのアイコンからOpen Main Window)、Preferencesを開きます。

左側のメニューからVirtual Machineを選択し、EmulationタブでVZを選択します。

同様に、Volumeタブでvirtiofsを選択します。

これでひとまず準備は整いました。起動します。

docker compose up -d

> docker compose up -d
WARN[0000] /Users/.../Project/Dify/dify/docker/docker-compose.yaml: `version` is obsolete
[+] Running 9/9
 ✔ Container docker-db-1          Started                                                              1.6s
 ✔ Container docker-web-1         Running                                                              0.0s
 ✔ Container docker-redis-1       Started                                                              1.4s
 ✔ Container docker-sandbox-1     Started                                                              1.2s
 ✔ Container docker-ssrf_proxy-1  Started                                                              1.6s
 ✔ Container docker-weaviate-1    Started                                                              1.3s
 ✔ Container docker-api-1         Started                                                              1.5s
 ✔ Container docker-worker-1      Started                                                              1.4s
 ✔ Container docker-nginx-1       Started

すべてのコンテナが正常に稼働していることを確認します。

docker ps -f name=docker --format "table {{.ID}}\t{{.Image}}\t{{.Status}}"

CONTAINER ID   IMAGE                              STATUS
f1958610dd05   nginx:latest                       Up About an hour
1486262aea4c   langgenius/dify-api:0.6.11         Up About an hour
e0f7c95faae2   langgenius/dify-api:0.6.11         Up About an hour
77d061a79118   ubuntu/squid:latest                Up About an hour
3258c4bc88c6   redis:6-alpine                     Up About an hour (healthy)
c92f9c9f4831   semitechnologies/weaviate:1.19.0   Up About an hour
7e9fddc9af0c   langgenius/dify-sandbox:0.2.1      Up About an hour
7d75467bae33   postgres:15-alpine                 Up About an hour (healthy)
ef8befdb2aa0   langgenius/dify-web:0.6.11         Up About an hour

4. 初期設定

正常に立ち上がったら、ブラウザでhttp://localhost:8888/installにアクセスして、初期ユーザー設定を行います。

ログイン後、以下のようなホーム画面が表示されたら問題ないです。

Dify終了手順

docker compose down ですべてのコンポーネントを終了させることができます。

Discussion