はじめに
状況
- Docker を使用
docker-compose.yml
を編集master
の最新版ではなく最新バージョン(タグ付き最新版)にアップデート
$ cd ~/live
$ git fetch
$ git stash
$ git tag
$ git checkout [バージョン番号]
$ git stash pop stash@{0}
$ sudo docker-compose pull
$ sudo docker-compose build
$ sudo docker-compose run --rm web rails db:migrate
$ sudo docker-compose run --rm web rails assets:precompile
$ sudo docker-compose stop && sudo docker-compose up -d
ファイルの退避と更新
未コミット状態のファイルの退避とマストドンのコードの更新を行う
作業ディレクトリへの移動
マストドンのコードがあるディレクトリに移動。以降はこのディレクトリで作業
$ cd ~/live/
ローカルリポジトリに反映
リモートにある Git リポジトリをローカルに反映させるためにフェッチ
$ git fetch
ファイルの退避
docker-compose.yml
等のファイルに変更を加えている場合は退避
$ git stash
未コミット状態のファイルが退避git status
や git diff
を実行したときにリポジトリがクリーンな状態になっている
現在退避中のコードが確認
$ git stash list
docker-compose.yml を編集する理由
デフォルトの docker-compose.yml
(GitHub の公式リポジトリからクローンしてきて変更を加えていない docker-compose.yml
)だと、PostgreSQL と Redis のデータが永続化されてない
データが永続化されていない状態でも使用することはできるが、設定を変更して Docker コンテナを再構築のとき、コマンドをミスで間違えてコンテナを削除したときに、データベースごと消える
タグ付き最新版へのアップデート
退避ができてリポジトリがクリーンな状態になったらタグ付き最新版にアップデート
$ git tag # 最新版のバージョン番号を調べる
$ git checkout [バージョン番号]
git checkout [バージョン番号]
で指定したタグ付きバージョンにアップデートできる
手動でタグ付き最新版のバージョンを調べる場合、 Releases · tootsuite/mastodon にアクセス
$ git tag | sort -V
出力結果に対して tail
で一番下の一行を抽出すればそれがタグ付き最新版のバージョン
$ git tag | sort -V | tail -n 1
$ git tag
$ git checkout [バージョン番号]
ファイルの復帰
チェックアウトしてタグ付きの最新版に更新後、退避したコードをリストア
$ git stash pop stash@{0}
退避したコードを復帰するコマンドには git stash pop [番号]
と git stash apply [番号]
があるpop
は、復帰したあと、スタッシュリストから削除するのに対して、apply
は復帰するだけでスタッシュリストからの削除を行わない
スタッシュリストに残ってしまったものを削除するには git stash drop [番号]
を使う
pop
は apply
と drop
を一緒に行うもの
Docker コンテナの更新
Docker のコンテナを更新
$ sudo docker-compose pull
Docker のビルドと再起動
$ sudo docker-compose build
時間がかかる可能性あり
ビルド完了後、マイグレーションを実行
$ sudo docker-compose run --rm web rails db:migrate
プリコンパイルを実行
$ sudo docker-compose run --rm web rails assets:precompile
Docker を再起動
$ sudo docker-compose stop && sudo docker-compose up -d