【Dify】Docker環境でv1.11.1からv1.11.4へ段階的アップグレードする方法 - バックアップから動作確認まで完全解説

はじめに

オープンソースのLLMアプリケーション開発プラットフォーム「Dify」をDocker Compose環境でv1.11.1からv1.11.4まで段階的にアップグレードした作業記録です。

本記事では、バックアップの取得から、gitでのバージョン切り替え、Dockerイメージの更新、動作確認までの一連の手順を解説します。

環境情報

  • デプロイ方式: Docker Compose
  • OS: Ubuntu (Linux 6.8.0-90-generic)
  • アップグレードパス: v1.11.1 → v1.11.2 → v1.11.3 → v1.11.4

アップグレード手順

Step 1: 現在のバージョン確認

cd /path/to/dify/docker
docker compose ps

実行中のコンテナとイメージバージョンを確認します。

Step 2: ボリュームのバックアップ

# コンテナ停止(ファイルロック回避のため)
docker compose down

# バックアップ作成
tar -czf volumes-$(date +%s).tgz volumes/

注意点: コンテナ稼働中にバックアップを取ると、Weaviate、PostgreSQL、Redisのデータファイルで権限エラーが発生する場合があります。完全なバックアップにはsudo権限が必要です。

# 完全バックアップ(sudo必要)
sudo tar -czf volumes-$(date +%s).tgz volumes/

Step 3: ローカル変更の保存

gitリポジトリにローカル変更がある場合は、パッチとして保存します。

cd /path/to/dify
git diff > /tmp/local_changes.patch
git checkout .

Step 4: 新バージョンへのチェックアウト

git fetch --tags
git checkout 1.11.4

Step 5: ローカル変更の再適用

git apply --reject /tmp/local_changes.patch

--rejectオプションを使うと、適用できない部分は.rejファイルとして出力され、適用可能な部分は反映されます。

Step 6: Dockerイメージの更新と起動

cd docker
docker compose pull
docker compose up -d

Step 7: 動作確認

# コンテナ状態確認
docker compose ps

# バージョン確認
docker inspect docker-api-1 --format '{{.Config.Image}}'

各バージョンの主な変更点

v1.11.2

  • InterSystems IRIS / SeekDB ベクトルデータベースサポート追加
  • Aliyun SLSログ統合
  • Mermaid Graph XSS脆弱性修正
  • SSRF / CSVインジェクション対策

v1.11.3

  • MCP Tool embeddedResourceサポート
  • ドキュメント一括再インデックス機能
  • PDF画像抽出機能の改善
  • Redisキャッシュ最適化(パイプライン削除)
  • 高負荷時のメモリリーク防止

v1.11.4

  • セキュリティ: Node.js 24.13.0へのアップグレード(CVE対応)
  • ログイン後のリダイレクト修正
  • id/message_idフィールド欠落の修正
  • nameプロパティのundefinedエラー修正

トラブルシューティング

バックアップ時の権限エラー

症状:

tar: volumes/weaviate/...: Cannot open: Permission denied
tar: volumes/db/data/pgdata: Cannot open: Permission denied

原因: Dockerコンテナ内で作成されたファイルは、コンテナ内のユーザー権限で作成されるため、ホスト側から読み取れない場合があります。

対処法:

  1. コンテナを停止してからバックアップを取る
  2. sudo権限でバックアップを実行する

docker compose実行ディレクトリの注意

症状: 古いバージョンのイメージが使用される

原因: docker composeコマンドはdocker-compose.yamlのあるディレクトリで実行する必要があります。

対処法: 必ずdocker/ディレクトリに移動してから実行します。

cd /path/to/dify/docker
docker compose up -d

CLAUDE.local.mdでの環境情報管理

今回のアップグレード作業では、ローカル環境固有の情報をCLAUDE.local.mdファイルに記録し、.gitignoreに追加してリポジトリにコミットしないようにしました。

これにより、AIコーディングアシスタント(Claude Code)が環境を理解しやすくなり、適切なコマンドを提案できるようになります。

まとめ

Difyのアップグレードは、以下の手順で安全に実施できます:

  1. ボリュームのバックアップ(コンテナ停止後、sudo推奨)
  2. ローカル変更をパッチ保存
  3. gitで新バージョンにチェックアウト
  4. パッチを再適用
  5. docker compose pull && docker compose up -d
  6. 動作確認

段階的にアップグレードすることで、問題発生時の切り分けが容易になります。

参考リンク