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
これでバックアップ用の新しいユーザーを作成しなくても、従来のユーザーでログインできました。
画像は一部参照できないものもありましたが、ほとんどのページで画像が正しく表示されていました。
参照切れしているページとしていないページの差は分かりませんでした。古めのページの参照が切れているかな。
参考
単純な話、/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のコンテナへコピーしたが、反映されなかった。