Wikijs Docker容器持续重启问题求助:配置HTTPS时遭遇数据库密码文件读取错误
解决WikiJS Docker容器因DB_PASS_FILE配置错误导致的持续重启问题
从你的日志报错EISDIR: illegal operation on a directory, read可以直接定位问题:你指定的DB_PASS_FILE路径指向了一个目录,而非实际的密码文件。WikiJS尝试读取这个路径获取数据库密码,但操作系统不允许读取目录内容,所以容器启动失败并反复重启。
具体修复步骤:
先清理出错的容器
首先停止并删除当前的wiki容器,因为它的挂载配置有误:docker stop wiki docker rm wiki创建正确的数据库密码文件
在本地主机上创建一个存放密码的文件(注意不是目录):# 先创建存放密码文件的父目录(如果不存在) mkdir -p /etc/wiki # 将你的PostgreSQL数据库密码写入文件,替换成实际密码 echo "your-postgres-password-here" > /etc/wiki/.db-secret # 设置严格的权限,避免密码泄露 chmod 600 /etc/wiki/.db-secret重新创建并启动容器
使用修改后的Docker命令(核心是确保挂载的是文件而非目录,这里命令和你原来的一致,但前提是本地的/etc/wiki/.db-secret已经是文件了):docker create --name=wiki \ -e LETSENCRYPT_DOMAIN=wiki.mywebsite.com \ -e LETSENCRYPT_EMAIL=myemail@gmail.com \ -e SSL_ACTIVE=1 \ -e DB_TYPE=postgres \ -e DB_HOST=db \ -e DB_PORT=5432 \ -e DB_PASS_FILE=/etc/wiki/.db-secret \ -v /etc/wiki/.db-secret:/etc/wiki/.db-secret:ro \ -e DB_USER=wiki \ -e DB_NAME=wiki \ -e UPGRADE_COMPANION=1 \ --restart=unless-stopped \ -h wiki \ --network=wikinet \ -p 80:3000 \ -p 443:3443 \ requarks/wiki:2启动容器:
docker start wiki验证修复结果
查看容器日志确认是否启动成功:docker logs wiki如果看到类似
DB_PASS_FILE is defined. Will use secret from file.且没有报错,说明密码文件读取正常,容器应该能正常运行了。
额外注意事项:
- 确保你的PostgreSQL容器(
db)已经在wikinet网络中,并且已经创建了名为wiki的数据库和用户,密码和你写入.db-secret文件的内容完全一致。 - 权限设置很重要:
chmod 600确保只有root用户能读取密码文件,避免敏感信息泄露。
内容的提问来源于stack exchange,提问作者DK26
相关产品推荐
相关产品推荐

