メインコンテンツまでスキップ

Difyのアップデートメモ

私のDifyの構築方法だとアップデートでやることがあるのでそのメモです。

通常の方法でインストールしている場合は新しいコードを取得した後起動すればいけるはず?

データの永続化は確認すること。
一応,初期からされてはいるはず・・・

アップデート方法

Difyを止める

まず、Difyの停止を行います。

cd /opt/dify/docker
sudo docker compose down

バックアップ作成(必要なら)

sudo cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak
sudo tar -cvf volumes-$(date +%s).tgz volumes

新しいコードを取得する

変更内容をstashしてpull
中身もだいぶ変更しているのでpopで変更を戻します

sudo git stash
sudo git pull origin main
sudo git stash pop

私の入れ方だとnginxやcertbotは再度つぶす必要あり(削除でも別に可)

sudo vi docker-compose.yaml

マーカーも不要なので<<<<<<<、=======、>>>>>>>は削除

起動する

念のためDify側でVersionは確認してください。

sudo docker compose up -d

Gitエラーが出てアップデートできない場合

競合してアップデートができない場合

上のやり方だと以下のようになる場合があります

sudo git pull origin main
sudo git stash pop
docker/docker-compose.yaml: needs merge
error: Pulling is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.
docker/docker-compose.yaml: needs merge
The stash entry is kept in case you need it again.

こうなると一度きれいに reset --hard で最新の状態にしてから、もしポート番号などの設定が必要なら、手動で docker-compose.yaml を編集し直すのが最も確実です。
バックアップはしているものとします。

1. 最新情報を取得

sudo git fetch origin

2. 強制的に公式最新版に合わせる

sudo git reset --hard origin/main

3. イメージを更新して起動

sudo docker compose pull

4.yaml変更後に起動する

私のやり方ではNginxやCertbotを無効化してるのでその後に起動したほうがいいです。

sudo docker compose up -d

versionを指定する(ダウングレードする)

2時間前に出たVersionにしたら動かないことがありました。
バックアップはしているものとします。

sudo git fetch --tags
sudo git reset --hard 1.11.0
sudo docker compose pull

yaml変更後に起動

sudo docker compose up -d

v1.11.0に移行時に発生したエラー(例)

以下のエラーが発生

[PANIC]failed to init dify plugin db: failed to connect to `host=db user=postgres database=postgres`: hostname resolving error (lookup db on 127.0.0.11:53: server misbehaving)

公式はdocker compose --profile postgresql up -dを実行で解決すると書いていたが解決されなかったです。

envファイルが新バージョンで大きく変わったことが原因だったみたいです。

私の場合は以下のようにenvファイル再作成する方が早かったですね。

sudo mv .env .env.bak
sudo cp .env.example .env

設定を戻したあとに起動

sudo docker compose up -d

問題なく起動しましたね・・・
何かあればenvも疑った方がよさそうですね。

別にdbの部分の差を探してそこだけ変更でもいいと思います。