如何修复 MongoDB Docker Can't initialize rotatable log file :: caused by :: Failed to open /var/log/mongodb/mongod.log

问题

启动 MongoDB Docker 容器时,你看到以下错误:

mongodb_rotatable_log_error.json
{"t":{"$date":"2025-05-26T16:58:22.276Z"},"s":"F",  "c":"CONTROL",  "id":20574,   "ctx":"main","msg":"Error during global initialization","attr":{"error":{"code":38,"codeName":"FileNotOpen","errmsg":"Can't initialize rotatable log file :: caused by :: Failed to open /var/log/mongodb/mongod.log"}}}

解决方案

你将 MongoDB 日志目录映射到了主机目录,但容器内的用户没有权限写入该目录。

docker-compose.yml 中的映射示例:

docker-compose.yml
services:
  mongodb:
    image: mongo
    container_name: mongodb
    ports:
      - "27017:27017"
    volumes:
      - ./mongodb_data:/data/db
      - ./mongodb_log:/var/log/mongodb

你需要修复主机目录 ./mongodb_log 的权限,使容器内的用户可以写入。

你可以在主机系统上运行以下命令来完成此操作:

fix_mongodb_log_permissions.sh
sudo chown -R 999:999 ./mongodb_log ./mongodb_data

设置数据目录的权限不是修复此特定错误消息所必需的,但如果你遇到了日志消息的错误,不妨同时修复数据目录的权限。


Check out similar posts by category: MongoDB, Docker