Mastodonのアップデートv1.2へ(追記あり ほぼ無停止更新)(docker system prune -a追記)

dockerのデプロイ、アップデートの方法がごっそり消えとる(キレ気味)
サンクス@nukosu@pao.moeさん
Main README developer documentation · Issue #1830 · tootsuite/mastodon · GitHub
短絡的。documentの方を整備してから変更してよ。あんまり英語読みきれてないけどお前のshouldとか知らん。
仕方がないので
README.mdを掘る
github.com
docker-compose.ymlとか編集しているので退避しないとだめね~
以下、流したコマンド

git stash save
git pull
git describe --tags `git rev-list --tags --max-count=1`
# versionを確認
git checkout -b v1.2 $(git describe --tags `git rev-list --tags --max-count=1`)
git checkout -b v1.3.1 refs/tags/v1.3.1 #こっちが良いかも #追記 2017/04/28
git stash list
git stash list -p
git stash show stash@{0}
git stash apply stash@{0}
docker-compose stop
docker-compose build
docker-compose run --rm web rails db:migrate
docker-compose run --rm web rails assets:precompile
docker-compose up -d
#追記
git stash drop stash@{0}

以上です。
次はdb/redisもバックアップすべきですねー。

2017/4/29 追記 1.3.1

2017/6/24 追記 1.4.6

1.3.1への更新がありました。
あれから考えたのですが、Linuxはプロセスを立ち上げる際に必要なファイルを別領域にコピーして使うので、起動しながらapacheをビルド、とかできるわけです。で、ビルド後restartして最新へ、とかできる。dockerも同じなはずで、今回は、バックアップ取ってから起動しながらdocker-composeのbuildをためしてみました。行けました。
以下、流したコマンド。スクリプトにして一気に行ける感じがでてきました。

2017/6/24 追記 1.4.6

docker system prune -aを追記します。いらないイメージ消しておきましょ。

git stash save
git pull
git checkout -b local$(git describe --tags `git rev-list --tags --max-count=1`) $(git describe --tags `git rev-list --tags --max-count=1`)
git stash apply stash@{0}
docker-compose build
docker-compose run --rm web rails db:migrate
docker-compose run --rm web rails assets:precompile
docker-compose stop && docker-compose up -d
git stash drop stash@{0}
docker system prune -a

基本ほぼ無停止で行けました。