はじめに
オープンソースの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コンテナ内で作成されたファイルは、コンテナ内のユーザー権限で作成されるため、ホスト側から読み取れない場合があります。
対処法:
- コンテナを停止してからバックアップを取る
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のアップグレードは、以下の手順で安全に実施できます:
- ボリュームのバックアップ(コンテナ停止後、sudo推奨)
- ローカル変更をパッチ保存
- gitで新バージョンにチェックアウト
- パッチを再適用
docker compose pull && docker compose up -d- 動作確認
段階的にアップグレードすることで、問題発生時の切り分けが容易になります。
コメント