月曜日に、Amemiya.workのバージョンを2.7.0へ上げたのですが、今回、色々と新機能が追加されたせいか、バージョンアップの手順が少し難解で不安だったので、鯖缶工場の皆様に相談しながら、バージョンアップ作業を行いました。
以下、Dockerでのバージョンアップ作業の方法です。参考になりますと幸いです。
バックアップを取る
sudo docker exec mastodon_db_1 pg_dump -Fc -U postgres postgres > name_of_the_backup.dump
これでバックアップを取ろうとした所、
Error: No such container: mastodon_db_1
というエラーが。DB見つからんってどういうことや……。
sudo docker ps
このコマンドで、今動いているコンテナを確認します。すると、mastodon_db_1なんてものは出てこず、代わりにlive_db_1というものがありました。つまり、
sudo docker exec live_db_1 pg_dump -Fc -U postgres postgres > name_of_the_backup.dump
これでOKというわけ。さらに、バックアップファイルをわかりやすくするため、
sudo docker exec live_db_1 pg_dump -Fc -U postgres postgres > 190121.dump
としました。
ただこれ、ファイル名を自動で日時にすることもできるそうで、そうしたい場合には、
sudo docker exec live_db_1 pg_dump -Fc -U postgres postgres > $(date +%Y%m%d%H%M).dump
とするとよいそう。コピペするならこっちかなぁ。
アップデート
前述の通り、鯖缶工場で伺った所、今までとそうやり方の違いは無いようです。
sudo docker-compose stop web
sudo docker-compose stop sidekiqgit fetch --all
git stash
git checkout v2.7.0
git stash popsudo docker-compose build
sudo docker-compose run --rm -e SKIP_POST_DEPLOYMENT_MIGRATIONS=true web rails db:migratesudo docker-compose up -d
sudo docker-compose run --rm web rails db:migrate
これで完了。所要時間30分ほど。とくにエラーなども発生しませんでした。
8行目で「SKIP_POST_DEPLOYMENT_MIGRATIONS=true」していますが、それ以外は、いつも通りのバージョンアップ手順で大丈夫でした。
Why? These migrations are cumbersome but are intended to improve performance and slow down database growth long-term. 🙏
これでDB肥大化が抑えられるというなら、ありがたいことです。