Mastodon 升级到特定版本

这个互联网如果没有一点小事都会写个教程的网友,我将寸步难行

参考

蓝盒子站长:如何利用Docker搭建Mastodon实例(二):进阶魔改篇 - 升级(2023-07-08修改)

升级到 v3.5.10

流程

打开 GitHub Desktop,在 mastodon repository 右键,Open in Command Prompt。
在打开的命令行窗口中输入命令查看远程仓库连接情况:

1
git remote -v

远程仓库应包含自己的仓库 (origin) 和官方仓库 (upstream),如下图:

如果没有官方仓库,可通过命令添加:

1
git remote add upstream https://github.com/mastodon/mastodon.git

然后拉取合并官方仓库中的更新:

1
2
git fetch --tags upstream
git merge v3.5.10 #要升级的tag名

GitHub Desktop 会在出现冲突时提醒冲突文件,并提示依次到 VS code 中修改。修改时注意查看冲突的具体内容,不要无脑接受。这次升级中遇到的冲突主要是因为本站有官方版本中没有的 local-only,根据提示保留更新的代码和原本属于 local-only 的部分。

在自己的仓库中为 v3.5.10 创建新的 tag:

1
2
git tag -f v3.5.10   #将相应tag标注在你最新提交的修改上
git push origin v3.5.10 #将这个tag推送到远程github库中

这之后,点开在 github 上的库,可以看到相应的 tag,在 Action 栏目中可以看到正在对该 tag 进行编译。

将本地的更改推送到远程仓库后,到服务器执行如下操作:

1
2
cd /home/mastodon/mastodon
docker pull melocery/mastodon:v3.5.10

修改文件 docker-compose.yml 中 web、streaming 和 sidekiq 的 image 部分,与镜像 tag 保持一致。之后重启镜像:

1
docker-compose up -d

小问题

合并 v3.5.10 后,在 .github/workflows 路径下多出一个和 docker image 相关的文件 build-image.yml,会在 Actions 中编译相关的镜像。但耗时很长,截至目前已经近两小时但还没编译完成,无法得知编译完成后在 Docker Hub 是什么样子、用什么 tag。
之前一直使用另一个文件 docker-image.yml 来编译 docker image,且在前面处理冲突时保留了这个文件,所以 Actions 中也会根据这个文件编译镜像并推送到 Docker Hub,在服务器端也是用的这个文件编译的镜像来建站。
反正都能用,不是什么大问题。等什么时候想起来看看第一个的编译结果再来更新第一个到底编译了个什么东西。

update:没看出来编译了个啥,Docker Hub 里还是只有我用 docker-image.yml 编译出来的镜像。

其它

docker 日志可放心删除,避免占用过多服务器资源:

1
sudo sh -c 'truncate -s 0 /var/lib/docker/containers/*/*-json.log'