错误信息 attempt to write a readonly database,这通常意味着容器内部的数据库文件或相关的存储路径没有写权限。以下是排查和解决该问题的步骤:
- 检查宿主机的目录权限
确保宿主机上的挂载目录 /data/calibre-web/config 和 /data/calibre-web/books 对指定的用户(PUID=1000,PGID=1000)具有写权限。
执行以下命令检查权限:
ls -ld /data/calibre-web/config /data/calibre-web/books
如果发现权限不正确,可以修复权限:
sudo chown -R 1000:1000 /data/calibre-web/config /data/calibre-web/books
sudo chmod -R 755 /data/calibre-web/config /data/calibre-web/books
检查容器内部挂载是否正确
进入容器内部检查挂载:docker exec -it calibre-web bash
然后检查挂载目录的权限:
ls -ld /config
确保数据库文件(例如 app.db)对 PUID=1000 和 PGID=1000 对应的用户可写。如果不可写,可以尝试:
chmod 664 /config/app.db chown 1000:1000 /config/app.db
退出容器
exit
重启容器并测试
修复权限后,重新启动容器:docker-compose down docker-compose up -d