最近在Docker中跑Nextcloud来做自己的网盘,但是今天突然成了maintenance模式,无法访问了,虽然存储卷是我另挂的,直接拷贝文件也可以,还是想解决一下问题。
网上搜索一下,发现官网有人问并给过解决方法(https://help.nextcloud.com/t/exit-maintanence-mode-in-docker/34434),记录一下。只不过现在官方Docker镜像的路径略有不同。路径是/var/www/html而不是/var/www/nextcloud。
使用docker exec 命令连接容器,后运行下面的命令即可。页面会出现升级提示,然后按提示做似乎没什么问题。另一个需要注意的问题是docker exec的时候,-u 用户名要和config.php的所有者uid一致才可以。
1 | php /var/www/html/occ maintenance:mode --off |
今天再次遇到这个问题,增补一点,config.php的用户名一般是www-data,uid是33,可以在docker exec的命令行里直接-u www-data即可。而且出现这个问题一般是在更新新版本镜像后可能需要使用命令迁移到新版本,在容器的命令行里,使用命令:php /var/www/html/occ upgrade,进行升级迁移就可以解除maintenance状态了。