quartz-research-note/content/Mastodonのアップデートでいちいちdocker-compose.ymlを一時的に書き換えない.md
Tomoya Matsuura(MacBookPro) 562de4835c
All checks were successful
Build / build (push) Successful in 2m10s
[obsidian] vault backup: 2024-02-15 12:56:18[
2024-02-15 12:56:18 +09:00

1.9 KiB
Raw Blame History

#tips

普通、dockerで運用するときはMastodonのリポジトリをクローンしてきて、docker-compose.ymlbuildをコメントアウトすることで、リポジトリからコンテナイメージをpullするように変える。

ただこの場合、バージョンアップデートの際にgit stash && git fetch && git checkout <version> するとこんな感じにconflictが発生する。(ここでは4.2から4.2.5にダウングレードしてる)

  web:
<<<<<<< Updated upstream
    build: .
    image: ghcr.io/mastodon/mastodon:v4.2.5
=======
    # build: .
    image: ghcr.io/mastodon/mastodon:v4.2.6
>>>>>>> Stashed changes
    restart: always

そこで、docker-compose.ymlとは別にdocker-compose.override.ymlというのを置いておくと、特定のキーを上書きしてくれる。

最近まで、この上書き機能では特定のエントリをコメントアウトするような操作はできなかったが、docker-compose v2.18.0以降で!resetというのを置いておくとできるようになった。

docker-compose.override.yml で 打ち消し定義 ができるようになった。

そこでこんなsudo apt-get upgrade docker-compose-plugindocker-compose.override.ymlを作る。


web:
	image: ghcr.io/mastodon/mastodon:latest
	build: !reset
	#depends_on: #必要に応じて
	#	- es
streaming
	image: ghcr.io/mastodon/mastodon:latest
	build: !reset
sidekiq
	image: ghcr.io/mastodon/mastodon:latest
	build: !reset

こうすれば、更新する時はdocker-compose pull&& docker-compose down && docker-compose up -d1つでよくなる。(compose自体に更新が入ったり、.env.productionとかに変更があったり、rake:db migrateする必要がある場合もあるので、基本はリリースノートを読んでから!)