LoginSignup
3
2

docker-composeで動かしているGrowiの移行手段

Last updated at Posted at 2023-08-10

Gwori移行手順

docker-composeで動作している前提です。

動作確認環境

  • 旧サーバー: Windows10 on Virtualbox on Ubuntu 20.04
  • 新サーバー: Windows10 on WSL2 on Ubuntu 22.04
  • Growi(新旧共通): v5.0.3
  • 新サーバーdocker-compose: v1.29.2
  • 新サーバーdocker: v20.10.21

古いサーバー上での操作

$ docker-compose stop
$ tar -czvf growi_volumes.tar.gz $(find /var/lib/docker/volumes -name 'growi*')

できあがったtar.gzを新しいサーバーへ移動します。

新しいサーバー上での操作

もし、早まってGrowiを開いてしまっていた場合

# ボリュームごと削除
$ docker-compose down --volumes

docker-compose upする前に、参照するDockerfile上で古い方で動いていたGrowiのバージョンと合わせておくこと。dockekr-compose upでボリュームを作ったらすぐに止めます。

$ docker-compose up -d
$ docker-compose stop

dockerボリュームを上書き展開します。

# -C オプションで / に対し var/lib/docker/volumes を展開します。
$ tar -xzvf path/to/growi_volumes.tar.gz -C /

最後にdocker-composeを再開します。

$ docker-compose start

これでバックアップ用の新しいユーザーを作成しなくても、従来のユーザーでログインできました。
画像は一部参照できないものもありましたが、ほとんどのページで画像が正しく表示されていました。
参照切れしているページとしていないページの差は分かりませんでした。古めのページの参照が切れているかな。

参考

ubuntu環境のgrowi移行手順

単純な話、/var/lib/docker/volumes/growi* 関連のデータをoldからnewへ移行すればいいだけのこと。

-rwxrwxrwx 1 u1and0 u1and0 663M  8月 10 11:22 growi_volumes.tar.gz

tar.gzにすると約600MBだった

これを利用して自動バックアップも取れそう。

今までは管理画面から手動バックアップだけとっていた。しかし、この方法では画像のバックアップが取れない。なぜならLocalに指定しているため!

画像の保存先をMongo/GridFSにしておけばよかったぁー
とはいえ今更悔やんでもしょうがない。
今更保存先をMongo/GridFSに変えたってこれまでアップロードした写真500点の参照が消えてしまい、永遠にアクセスできなくなってしまうため。
ただし、下の方法で参照がばらばらでもアップロードしたファイルだけは救済できる余地がある。

やってだめだったこと

Discussion: FILE_UPLOAD=local 環境下での Attachment 保存場所の予期しない変更(bug 含む)への対処について

v6.1.0 での変更
2023年5月にリリースを目指している v6.1.0 で、保存場所が再び変更されますのでまずは頭出しです。

Before -> After
/opt/growi/packages/app/public -> /opt/growi/apps/app/public

参考によると /opt/growi/packages/app/public辺りに画像が含まれているらしい。

docker exec -it growi_app_1 で潜り込んでtar.gzにしてアップロードファイル一覧をサルベージした。

しかし、これをnew docker composeのコンテナへコピーしたが、反映されなかった。

3
2
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
3
2