如何修复 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设置数据目录的权限不是修复此特定错误消息所必需的,但如果你遇到了日志消息的错误,不妨同时修复数据目录的权限。
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow