Dockerを使ったMastodonを1.4.7から1.5.0にバージョンアップしました。
#アップグレード手順
1.3.2から1.4.3にバージョンアップしたときの手順でアップグレードしていきます。
マイグレーション実行時の外部キーに関するエラーは出ません。
#アップグレード後のログ確認でエラー発見
アップグレード後にログの確認。
ctrl-fで中断できます。
docker-compose logs -f
下記のエラーが出ていました。
systemTID-gmplcyec4 WARN: Errno::EACCES: Permission denied @ dir_s_mkdir - /mastodon/public/system/accounts/avatars/000/000/502
#ディレクトリのアクセス権を確認
/mastodon/public/systemは下記のdocker-compose.ymlの抜粋にあるようにホストOSのディレクトリをマウントしているのでdocker-compose.ymlがあるディレクトリの./public/systemのアクセス権を確認。
web:
extends:
service: app
container_name: mstdn-web
restart: always
env_file: .env.production
command: bundle exec rails s -p 3000 -b '0.0.0.0'
depends_on:
- db
- redis
volumes:
- ./public/assets:/mastodon/public/assets
- ./public/packs:/mastodon/public/packs
- ./public/system:/mastodon/public/system
networks:
- mstdn
ls -lの結果(抜粋)
drwxr-xr-x 4 991 991 4096 8月 6 20:00 assets
drwxr-xr-x 6 991 991 36864 8月 6 18:02 packs
drwxr-xr-x 5 root root 4096 8月 6 22:47 system
「system」ディレクトリのオーナーがrootになっているので、「assets」「packs」に合わせて、mastodonの実行ユーザーの「991」にオーナーを変更。
chown -R 991.991 system
エラーが解消され、「/mastodon/public/system/accounts/avatars」以下に書き込まれていることをログで確認。
以上でバージョンアップは終了です。
#リンクが切れたDocker volumeの削除
何回かバージョンアップをするとリンクが切れたDocker volumeが増えてディスク容量を圧迫しますので、リンクが切れたDocker volumeを削除します。
docker volume ls -f "dangling=true" -q | xargs docker volume rm