はじめに
Difyって、頻繁にアップデートが行われますね!都度魅力的な機能が加わりますので、毎回ワクワクしちゃいます。ここでは、Amazon Linux 2環境にインストールされたDifyをアップグレードする手順を示します。このガイドは、以下の記事でご紹介したインストール手順に従ってDifyを導入された方向けです。(他の環境に入れられた方も参考になると思います)
事前準備
アップグレードを始める前に、以下の点を確認してください
- 現在のデータのバックアップを取得していること
- 十分なディスク容量があること
- メンテナンス時間を確保していること
- ローカルでの変更内容を把握していること(特にdocker-compose.yamlの修正)
アップグレード手順(Docker Compose環境)
1. ローカルの変更確認
まず、現在の環境での変更状況を確認します。
$ cd ~/dify
$ git status
どのファイルを変更しているのかを確認しておきましょう。
2. バックアップの作成
現在の設定とデータのバックアップを取得します。
$ cd ~/dify/docker
$ cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak
$ cp .env .env.$(date +%s).bak
$ tar -cvf volumes-$(date +%s).tgz volumes
3. ローカルの変更の退避
変更されているファイルを一時的に退避させます。
$ cd ~/dify
$ git stash
Saved working directory and index state WIP on (no branch): 4b0d2bf57 chore: update build-push.yml to remove unnecessary tags
4. 最新のコードを取得
$ git checkout main
Previous HEAD position was 4b0d2bf57 chore: update build-push.yml to remove unnecessary tags
Switched to branch 'main'
Your branch is behind 'origin/main' by 264 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
$ git pull origin main
(多々出力あります。略です)
5. サービスの停止
$ cd docker
$ docker-compose down
Stopping docker-nginx-1 ... done
Stopping docker-worker-1 ... done
Stopping docker-api-1 ... done
Stopping docker-db-1 ... done
Stopping docker-ssrf_proxy-1 ... done
Stopping docker-web-1 ... done
Stopping docker-weaviate-1 ... done
Stopping docker-sandbox-1 ... done
Stopping docker-redis-1 ... done
Removing docker-nginx-1 ... done
Removing docker-worker-1 ... done
Removing docker-api-1 ... done
Removing docker-db-1 ... done
Removing docker-ssrf_proxy-1 ... done
Removing docker-web-1 ... done
Removing docker-weaviate-1 ... done
Removing docker-sandbox-1 ... done
Removing docker-redis-1 ... done
Removing network docker_default
Removing network docker_ssrf_proxy_network
Removing network docker_milvus
WARNING: Network docker_milvus not found.
Removing network docker_opensearch-net
WARNING: Network docker_opensearch-net not found.
※ 「Network docker_milvus not found」や「Network docker_opensearch-net not found」といったワーニングが表示される場合がありますが、これらは問題ありません。これらは未使用のネットワークに関する通知です。
6. 設定ファイルの更新
ローカルの設定を新しい環境に反映します。
# バックアップした設定と新しい設定を比較
$ diff docker-compose.yaml.*.bak docker-compose.yaml
$ diff .env.*.bak .env.example
# 必要な変更を新しいファイルに適用
$ vi docker-compose.yaml
$ vi .env
7. サービスの再起動
$ docker-compose up -d
Creating network "docker_default" with the default driver
Creating network "docker_ssrf_proxy_network" with driver "bridge"
Creating network "docker_milvus" with driver "bridge"
Creating network "docker_opensearch-net" with driver "bridge"
Creating volume "docker_dify_es01_data" with default driver
Pulling web (langgenius/dify-web:0.11.0)...
0.11.0: Pulling from langgenius/dify-web
4abcf2066143: Already exists
9f16480e2ff5: Already exists
092226d52cac: Already exists
0493dfb2ff9c: Already exists
32cdc670699a: Pull complete
8b3c0aa85eca: Pull complete
af3000ec4d41: Pull complete
5d6f0ea61668: Pull complete
b169f7bdc92a: Pull complete
035dcc618757: Pull complete
0b201a402996: Pull complete
1ab40d49a6cb: Pull complete
b8b6ee54ae2c: Pull complete
Digest: sha256:de03800b1960117011f8d510fcd02570dc68f7ab4bcdc3278d5fd756be87c1a6
Status: Downloaded newer image for langgenius/dify-web:0.11.0
Pulling worker (langgenius/dify-api:0.11.0)...
0.11.0: Pulling from langgenius/dify-api
a480a496ba95: Pull complete
9555349e8380: Pull complete
1c161e44b06b: Pull complete
417516d8bb61: Pull complete
d197aa066fee: Pull complete
2e3a189d6ded: Pull complete
4f4fb700ef54: Pull complete
a85ccdde7f53: Pull complete
33fbb0aac3f9: Pull complete
16a8041c47d4: Pull complete
fd8313391acd: Pull complete
94bc503e60f9: Pull complete
Digest: sha256:1b82b9376c1e6175a97bb92178f609b6965fbd93e7be230559570c20fa061d40
Status: Downloaded newer image for langgenius/dify-api:0.11.0
Pulling sandbox (langgenius/dify-sandbox:0.2.10)...
0.2.10: Pulling from langgenius/dify-sandbox
302e3ee49805: Pull complete
eeec0daa4c1f: Pull complete
9374269b22c3: Pull complete
e9e6580aad05: Pull complete
81825055f7ad: Pull complete
41316c558183: Pull complete
808156f66bdf: Pull complete
31fca5fdfe1e: Pull complete
7f6a9ac15091: Pull complete
03982c40e7d4: Pull complete
Digest: sha256:6c69b6e379255d5865dd9ac25b588942dc4a7a5e8f57afcf736080414459e8dd
Status: Downloaded newer image for langgenius/dify-sandbox:0.2.10
Creating docker_db_1 ... done
Creating docker_ssrf_proxy_1 ... done
Creating docker_redis_1 ... done
Creating docker_web_1 ... done
Creating docker_sandbox_1 ... done
Creating docker_weaviate_1 ... done
Creating docker_worker_1 ... done
Creating docker_api_1 ... done
Creating docker_nginx_1 ... done
8. アップグレードの確認
ブラウザでDifyの管理画面にアクセスし、正常に動作することを確認します。
http://[your-domain-name]
おぉ!ちゃんとアップグレードできましたね!めでたしめでたしです。ワークフロー類も残っていました。良かった!
トラブルシューティング
アップグレード後に問題が発生した場合は、以下の手順で対処できると思います。未検証ですが、参考までにメモを残します。
ログの確認
$ docker-compose logs -f
バックアップからの復元
# サービスを停止
$ docker-compose down
# バックアップしたファイルを復元
$ cp docker-compose.yaml.*.bak docker-compose.yaml
$ cp .env.*.bak .env
# バックアップしたvolumesを復元
$ rm -rf volumes
$ tar xvf volumes-*.tgz
# サービスを再起動
$ docker-compose up -d
自動起動設定の確認
アップグレード後、自動起動の設定が正常に機能することを確認します。
# systemdサービスの状態確認
$ sudo systemctl status dify.service
# 必要に応じてサービスの再起動
$ sudo systemctl restart dify.service
まとめ
Difyのアップグレードは、適切な手順を踏めば安全に実行できます。ただし、重要なデータを扱うシステムのアップグレードでは、必ず事前にバックアップを取得し、十分なテストを行うことをお勧めします。また、アップグレード作業は、システムの利用が少ない時間帯に実施することをお勧めします。
特に注意が必要なのは、カスタマイズした設定(docker-compose.yamlやポート設定など)の移行です。アップグレード後に、これらの設定が正しく反映されているか必ず確認しましょう。
定期的なアップグレードにより、新機能の利用や安全性の向上が図れます。ぜひ、計画的なアップグレードを実施していきましょう。この手順がどなたかのお役に立てれば!