# bakudankun/crowi からの移行
# 概要
- Crowi の docker image、bakudankun/crowi (opens new window) を利用している環境から、GROWI 公式の docker-compose を用いたディプロイ方法である weseek/growi-docker-compose (opens new window) への切り替えを想定
- その際、以下のデータ移行を伴うことになる
- MongoDB コンテナのデータボリュームからデータを吸い出し、リストアする
- アプリケーションコンテナのデータボリュームからアップロードファイルデータを吸い出し、リストアする
# 前準備
- Crowi と GROWI のコンテナを起動しておく
仮に、それぞれで利用しているコンテナ名、データボリューム名を以下とする(必要に応じて置き換える)
Crowi GROWI アプリケーションコンテナ crowi_crowi_1 growi_app_1 アプリケーションコンテナ用データボリューム crowi_crowi_data growi_growi_data MongoDB コンテナ crowi_mongo_1 growi_mongo_1
# PASSWORD_SEED の抽出
bakudankun/crowi (opens new window) 利用時に、環境変数で PASSWORD_SEED を明示的に指定していた場合は、 GROWI でもそれを引き続き利用する
明示的に指定していなかった場合、自動生成された値がデータボリュームに保存されているので、それを抽出する
(TBD)
# DB のデータ移行
Crowi から mongodump を使い DB のデータのバックアップを取る
docker run -it --rm --link crowi_mongo_1 --network crowi_default --volume $(pwd):/backup mongo bash mongodump --host crowi_mongo_1 --db crowi --out /backup
GROWI へバックアップデータをリストアする
docker run -it --rm --link growi_mongo_1 --network growi_default --volume $(pwd):/backup mongo bash mongorestore -v --host growi_mongo_1 --db growi backup/crowi
[要調査] ユニーク制約に引っかかるかもしれない
PASSWORD_SEED
のセット- 抽出した
PASSWORD_SEED
を GROWI 側の起動時の環境変数(docker-compose.yml
で指定)に設定する
- 抽出した
GROWI を再起動
# アップロードファイルのデータ移行
アップロードファイルの保存先に AWS S3 を使う場合は、以下の作業は不要
- bakudankun/crowi (opens new window) は、デフォルトでアップロードファイルをファイルシステムに保存します(
FILE_UPLOAD=local
) - 同様の環境で動かすには、データを移した上で GROWI 側の起動時の環境変数(
docker-compose.yml
で指定)にFILE_UPLOAD=local
を入れる
Crowi から uploads のバックアップを取る
docker run --rm -v crowi_crowi_data:/data -v $(pwd):/backup bakudankun/crowi cp -rp /data /backup
GROWI へバックアップデータをリストアする
docker run --rm -v crowiplus_crowi_data:/data -v $(pwd):/backup growi_app_1 cp -rp /backup/uploads /data/