You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wikijs Docker容器持续重启问题求助:配置HTTPS时遭遇数据库密码文件读取错误

解决WikiJS Docker容器因DB_PASS_FILE配置错误导致的持续重启问题

从你的日志报错EISDIR: illegal operation on a directory, read可以直接定位问题:你指定的DB_PASS_FILE路径指向了一个目录,而非实际的密码文件。WikiJS尝试读取这个路径获取数据库密码,但操作系统不允许读取目录内容,所以容器启动失败并反复重启。

具体修复步骤:

  1. 先清理出错的容器
    首先停止并删除当前的wiki容器,因为它的挂载配置有误:

    docker stop wiki
    docker rm wiki
    
  2. 创建正确的数据库密码文件
    在本地主机上创建一个存放密码的文件(注意不是目录):

    # 先创建存放密码文件的父目录(如果不存在)
    mkdir -p /etc/wiki
    # 将你的PostgreSQL数据库密码写入文件,替换成实际密码
    echo "your-postgres-password-here" > /etc/wiki/.db-secret
    # 设置严格的权限,避免密码泄露
    chmod 600 /etc/wiki/.db-secret
    
  3. 重新创建并启动容器
    使用修改后的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
    
  4. 验证修复结果
    查看容器日志确认是否启动成功:

    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 08:32:37