几年来,我一直在家用 Raspi 4 在 docker-compose 中运行 Nextcloud 实例,大约每两个月更新一次图像。在今天的 NC 更新从 25.0.3 到 25.0.4 期间,我的 pi 停止工作,我不得不重新启动它(通过拔掉插头)。但现在我的 Nextcloud 容器不再工作了。Docker 状态始终处于“正在重新启动 (255)”状态,即使我尝试启动附加的容器,控制台上也不再有输出,只有“nextcloud 以代码 255 退出”和“docker 日志 nextcloud“命令没有输出。
> docker-compose up nextcloud
mariadb is up-to-date
Starting nextcloud ... done
Attaching to nextcloud
nextcloud exited with code 255
我尝试删除图像,甚至尝试了旧版本,但它一直以代码 255 退出。有什么办法可以解决这个问题吗?
这是我为 Nextcloud 编写的 docker-compose 文件:
services:
nextcloud:
container_name: nextcloud
image: nextcloud:latest
restart: unless-stopped
depends_on:
- mariadb
environment:
- MYSQL_HOST=mariadb:3306
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=***
volumes:
- /media/myCloudDrive/nextcloud:/var/www/html
- /media/myCloudDrive/configs/apache2.conf:/etc/apache2/apache2.conf
- /var/run/redis/redis.sock:/var/run/redis/redis.sock
答案1
您需要调试错误。docker 容器退出状态“255”仅表示其主 entrpypoint/命令进程以该状态停止。255 代码仅表示“出现错误”,但除此之外没有告诉您太多信息。
有关调试的建议,请参阅文章 调试爆炸的 Docker 容器的 6 种方法,其中描述了以下命令:
docker logs <container_id>
docker stats <container_id>
docker cp <container_id>:/path/to/useful/file /local-path
docker exec -it <container_id> /bin/bash
docker commit <container_id> my-broken-container &&
docker run -it my-broken-container /bin/bash
另请参阅 Docker 的 HTTP 工具包,一个帮助 Docker 调试的开源工具。
答案2
我终于找到了原因。在更新过程中,文件夹“core”和“lib”中的本地 php 文件以及文件“version.php”被清除。所有文件大小均为 0kb。我通过在我的 PI 上启动一个新的 Nextcloud 实例并将所有受影响的文件移动到我的主要安装中来解决这个问题。运行occ upgrade
并occ maintenance:repair
完成其余工作。我的 Nextcloud 又恢复了!