海ミハ車両区

宮原太聖(Miha)の雑記帳。おおむね週1回更新でした。当面(記事がある程度貯まるまで)はおおむね月1回の更新です。

How to Mastodon v2.6.5→v2.7.0 update (docker)

github.com

 

月曜日に、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 sidekiq

git fetch --all
git stash
git checkout v2.7.0
git stash pop

sudo docker-compose build
sudo docker-compose run --rm -e SKIP_POST_DEPLOYMENT_MIGRATIONS=true web rails db:migrate

sudo 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肥大化が抑えられるというなら、ありがたいことです。