Wie man MongoDB Docker behebt: Can't initialize rotatable log file :: caused by :: Failed to open /var/log/mongodb/mongod.log
Problem
Beim Starten Ihres MongoDB-Docker-Containers sehen Sie den folgenden Fehler:
{"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"}}}Lösung
Sie haben das MongoDB-Log-Verzeichnis auf ein Host-Verzeichnis gemappt, aber der Benutzer im Container hat keine Berechtigung, in dieses Verzeichnis zu schreiben.
Beispiel-Mapping in Ihrer docker-compose.yml:
services:
mongodb:
image: mongo
container_name: mongodb
ports:
- "27017:27017"
volumes:
- ./mongodb_data:/data/db
- ./mongodb_log:/var/log/mongodbSie müssen die Berechtigungen des Host-Verzeichnisses ./mongodb_log korrigieren, damit der Benutzer im Container darin schreiben kann.
Sie können dies tun, indem Sie den folgenden Befehl auf Ihrem Host-System ausführen:
sudo chown -R 999:999 ./mongodb_log ./mongodb_dataDas Setzen der Berechtigungen für das Datenverzeichnis ist nicht erforderlich, um diese spezifische Fehlermeldung zu beheben, aber wenn Sie den Fehler für die Log-Meldung erhalten, können Sie auch die Berechtigungen des Datenverzeichnisses gleichzeitig korrigieren.