错误信息 attempt to write a readonly database,这通常意味着容器内部的数据库文件或相关的存储路径没有写权限。以下是排查和解决该问题的步骤:

  1. 检查宿主机的目录权限

确保宿主机上的挂载目录 /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
  1. 检查容器内部挂载是否正确
    进入容器内部检查挂载:

    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
  2. 重启容器并测试
    修复权限后,重新启动容器:

    docker-compose down
    docker-compose up -d
如果觉得我的文章对你有用,请随意赞赏