0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dify を Docker Desktop+WSL2 環境で 1.7.2 にバージョンアップする手順

Last updated at Posted at 2025-08-23

Dify を Docker Desktop+WSL2 上で運用している環境を、バックアップを取りながら安全に1.7.2 へアップデートした手順をまとめました。なお、Dify1.2.0からDify 1.7.2にバージョンアップしています。

環境

  • Windows 11 + Docker Desktop
  • WSL2 (Ubuntu) 上に Dify 配置
  • Dify のディレクトリ構成(例):
/home/XXXXXX/docker/dify/
├── .env
├── docker-compose.yaml
├── nginx/
├── certbot/
└── volumes/
    ├── db/
    ├── weaviate/
    ├── redis/
    ├── ...

バックアップ

1. コンテナを停止

$ cd /home/XXXXXX/docker/dify
$ docker compose down

2. volumes ディレクトリをアーカイブ

Dify は ./volumes/ に Postgres や Weaviate などのデータをマウントしているため、ここをバックアップします。

$ sudo tar czfv volumes_$(date +%Y%m%d).tgz volumes

3. 設定ファイルも保存

以下も必ずバックアップしておきます。

  • .env
  • docker-compose.yaml
  • nginx/, certbot/(カスタマイズしている場合)
$ sudo cp .env .env_$(date +%Y%m%d)
$ sudo cp docker-compose.yaml docker-compose.yaml_$(date +%Y%m%d)
$ sudo tar czfv nginx$(date +%Y%m%d).tgz nginx
$ sudo tar czfv certbot$(date +%Y%m%d).tgz certbot

バージョンアップ

1. docker-compose.yaml のイメージタグ更新

services:
  api:
    image: langgenius/dify-api:1.7.2
  web:
    image: langgenius/dify-web:1.7.2
  worker:
    image: langgenius/dify-api:1.7.2
  1. docker-compose.yamlで
worker:
image: langgenius/dify-worker:1.X.X

の場合があります。この場合も1.7.2を指定すればOKです。
補足:dify-worker がない場合 にジャンプを参照ください。

2. 新しいイメージを取得

$ sudo docker compose pull

3. コンテナを再起動

$ sudo docker compose up -d

4. マイグレーション確認

DB マイグレーションが自動で走るのでログを確認します。

$ sudo docker compose logs -f api

api-1  | /bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
api-1  | /entrypoint.sh: line 7: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
api-1  | Running migrations
api-1  | 2025-08-23 08:45:59.971 INFO [MainThread] [utils.py:164] - NumExpr defaulting to 8 threads.
api-1  | Preparing database migration...
api-1  | Database migration skipped
api-1  | [2025-08-23 08:46:15 +0000] [1] [INFO] Starting gunicorn 23.0.0
api-1  | [2025-08-23 08:46:15 +0000] [1] [INFO] Listening at: http://0.0.0.0:5001 (1)
api-1  | [2025-08-23 08:46:15 +0000] [1] [INFO] Using worker: gevent
api-1  | [2025-08-23 08:46:15 +0000] [28] [INFO] Booting worker with pid: 28
api-1  | 2025-08-23 08:46:30.390 INFO [MainThread] [utils.py:164] - NumExpr defaulting to 8 threads.

エラーがなければアップデート完了です。

ロールバック(失敗時)

万一アップデートが失敗したら、以下で戻せます。

$ sudo docker compose down
$ sudo rm -rf volumes
$ sudo tar xzf volumes_YYYYMMDD.tgz

その後、旧バージョンの docker-compose.yaml に戻して再起動します。

ポイント

  • 最重要データは volumes/db/(Postgres)。ここを失うとユーザーや知識ベースが消えるので必ずバックアップ。
  • weaviate/(ベクトルDB)や app/(アップロードファイル)も実運用では重要。
  • Redis や Sandbox はキャッシュ系なので、必須ではないがまとめて tar にしておくと安心。
    -アップデート後は必ず Web UI にログインしてバージョンが 1.7.2 になっているか確認。

まとめ

  • 設定ファイル+volumes/ をバックアップすれば安全にアップデートできる
  • docker-compose.yaml のイメージタグを 1.7.2 に変更して pull → up -d するだけ
  • 失敗しても tar バックアップからリストア可能

これで WSL2 上の Docker Desktop 環境でも安心して Dify を 1.7.2 にアップデートできます。

補足:dify-worker がない場合

Dify を Docker で運用していると、docker-compose.yaml の中に dify-worker コンテナが無い場合があります。

dify-worker とは?

Dify には以下の2種類の処理があります。

  • API サーバー処理(REST/GraphQL 経由でフロントや外部と通信)
  • バックグラウンド処理(Embedding 生成、メール送信、ジョブキューなど非同期処理)

このバックグラウンド処理を担うのが worker サービス です。
一部の構成では dify-worker という名前で定義されています。

dify-api イメージで兼用できる

実は worker 用の専用イメージは存在せず、dify-api イメージを兼用しています。
コンテナの役割は 起動コマンド (command) の違いで切り替えます。

典型的な docker-compose.yaml はこうなります:

services:
  api:
    image: langgenius/dify-api:1.7.2
    command: api      # API サーバーを起動

  worker:
    image: langgenius/dify-api:1.7.2
    command: worker   # バックグラウンド処理を担当

つまり 同じイメージを二役で使う構成になっています。

メリット

  • ビルドや更新が楽
    → dify-api イメージひとつを pull すれば OK。
  • 役割を分けてスケール可能
    → API は2コンテナ、Workerは4コンテナ…のように独立してスケールアウトできる。
  • 安定運用
    → API が重くても Worker を別コンテナで走らせるので、レスポンス遅延を回避できる。

まとめ

  • dify-worker という専用コンテナは存在しない
  • 実際は dify-api イメージを API と Worker の2役に使っている
  • command: api でAPIサーバー、command: worker でバックグラウンド処理
  • スケールアウトや負荷分散も柔軟にできる

補足:困ったときは?

  • docker compose config --services でサービス一覧を確認する
  • docker compose logs -f worker でバックグラウンドジョブが流れているかを確認する
  • Embedding 処理が詰まるようなら Worker コンテナを増やすと改善する

補足:

バージョンアップ後に、プラグインをインストールしようと思い、プラグイン画面を表示すると下記のようなエラーが画面右上に表示され、インストールができませんでした

Failed to parse response from plugin daemon to PluginDaemonBasicResponse [PluginListResponse], url: plugin/acafe0f8-81f2-42fe-a806-abef95d33ff3/management/list

いろいろと探してみたところ、下記記事にあるように、difyの1.7.2ではplugin_daemonを0.2.0に変更することが必要ということだった。

下記のようにdocker-compose.yamlを更新し

  plugin_daemon:
    # image: langgenius/dify-plugin-daemon:0.0.7-local
    image: langgenius/dify-plugin-daemon:0.2.0-local

pluginとapiを立ち上げ直せばOK

$ docker compose pull plugin_daemon && docker compose up -d plugin_daemon api
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?