2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Difyのローカルインストール手順

2
Posted at

はじめに

Difyをローカル環境にインストールする手順です。Difyはwebで動くようになっているため、Dockerでnginxを動かす環境をローカルに構築して、webで接続することになります。

環境

Ubuntu20.4 (Windows10 + Vagrant)

公式サイトの手順

手順

Difyのソースコードをローカルにクローンします。

$git clone https://github.com/langgenius/dify.git

ディレクトリに移動します。

$cd dify/docker

環境ファイルを作成します。

$cp .env.example .env

Docker composeがインストールされているか確認します。インストールされている場合、バージョンも確認します。

$docker compose -v
$docker compose version
Docker Compose version v2.32.4

Docker Compose を起動します。この後、多少時間がかかります。

※自分の環境は、Docker Compose V2なので、次のコマンドで起動しますが、Docker Compose Vの場合はコマンドが若干異なります。

$docker compose up -d

最後にこのようにコンテナの状態が表示されます。

[+] Running 10/11
 ✔ Network docker_ssrf_proxy_network  Created                                                                                      1.4s
 ✔ Network docker_default             Created                                                                                      0.2s
 ✔ Container docker-redis-1           Started                                                                                     11.5s
 ✔ Container docker-web-1             Started                                                                                     11.5s
 ✔ Container docker-weaviate-1        Started                                                                                     11.6s
 ✔ Container docker-sandbox-1         Started                                                                                     11.5s
 ✔ Container docker-db-1              Started                                                                                     11.5s
 ✔ Container docker-ssrf_proxy-1      Started                                                                                     11.7s
 ✔ Container docker-api-1             Started                                                                                      9.7s
 ✔ Container docker-worker-1          Started                                                                                      9.6s
 ⠼ Container docker-nginx-1            Starting

Docker composeで動作するプロセスをすべて表示して、正常に動作していることを確認します。

$docker compose ps

api / worker / web の3つがビジネスサービスで、weaviate / db / redis / nginx の4つが基礎コンポーネントとなります。

NAME                  IMAGE                              COMMAND                  SERVICE      CREATED         STATUS                   PORTS
docker-api-1          langgenius/dify-api:0.15.2         "/bin/bash /entrypoi…"   api          2 minutes ago   Up 2 minutes             5001/tcp
docker-db-1           postgres:15-alpine                 "docker-entrypoint.s…"   db           3 minutes ago   Up 2 minutes (healthy)   5432/tcp
docker-redis-1        redis:6-alpine                     "docker-entrypoint.s…"   redis        3 minutes ago   Up 2 minutes (healthy)   6379/tcp
docker-sandbox-1      langgenius/dify-sandbox:0.2.10     "/main"                   sandbox      3 minutes ago   Up 2 minutes (healthy)
docker-ssrf_proxy-1   ubuntu/squid:latest                "sh -c 'cp /docker-e…"   ssrf_proxy   3 minutes ago   Up 2 minutes             3128/tcp
docker-weaviate-1     semitechnologies/weaviate:1.19.0   "/bin/weaviate --hos…"   weaviate     3 minutes ago   Up 2 minutes
docker-web-1          langgenius/dify-web:0.15.2         "/bin/sh ./entrypoin…"   web          3 minutes ago   Up 2 minutes             3000/tcp
docker-worker-1       langgenius/dify-api:0.15.2         "/bin/bash /entrypoi…"   worker       2 minutes ago   Up 2 minutes             5001/tcp

ここで更に、Difyのソースコードをgitでpullします。

$cd dify/docker
$git pull origin main

downコマンドを実行してupされているDockerイメージを削除します。pullコマンドでDocker HubからDockerイメージを取得します。そして、upコマンドで再びDockerイメージを作成して起動します。

$docker compose down
$docker compose pull
$docker compose up -d

公式サイトにこのような記述があります。

無題.png

「えーっ!なにー!」と仰天しながら自分の環境を確認してみると、上記のコマンドを実行しても、初回に「git clone https://github.com/langgenius/dify.git」 したときから、「.env.example」のタイムスタンプは変わっていませんでした。

ブラウザでURLにこのように指定するとローカルのDifyが起動します。

http://your_server_ip/install
http://192.168.33.10:8080/install

このような画面が起動すればOKです。

無題02.png

トラブルシュート

Dockerの起動でNginxの起動がエラーになったためそのトラブルシュートです。

$docker compose up -d

上記のコマンドを実行すると、つぎのエラーが出ました。
nginxを起動しようとしたが、ポート80番が既に使われていますといった内容です。

Error response from daemon

: driver failed programming external connectivity on endpoint docker-nginx-1 
: failed to bind port 0.0.0.0:80/tcp
: Error starting userland proxy
: listen tcp4 0.0.0.0:80
: bind: address already in use

80番を握っているサービスを調べたところ、案の定、Apache2が握っていました。

$lsof -i :80
COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
apache2 1127     root    4u  IPv6  27713      0t0  TCP *:http (LISTEN)
apache2 1147 www-data    4u  IPv6  27713      0t0  TCP *:http (LISTEN)
apache2 1148 www-data    4u  IPv6  27713      0t0  TCP *:http (LISTEN)

nginxのポート番号をデフォルトの80番から別の番号(8080)にカスタマイズします。

参考記事
https://zenn.dev/shimiyu/articles/f74b85f7c795a5#%E3%83%9D%E3%83%BC%E3%83%88%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0

ポート番号をカスタマイズするには、dify/docker/docker-compose.yamlを編集します。

dify/docker/docker-compose.yaml
 ports:
      - '8080:80'                                                # この1行を追加
      # - '${EXPOSE_NGINX_PORT:-80}:${NGINX_PORT:-80}'
      # - '${EXPOSE_NGINX_SSL_PORT:-443}:${NGINX_SSL_PORT:-443}'

編集の内容はこのようになります。

- '変更後ポート番号:変更前ポート番号'

ブラウザから接続するときは、ポート番号を明示的に指定する必要があります。

http://your_server_ip/install                  # ポート80で接続
http://your_server_ip:8080/install             # ポート8080で接続
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?