Wie man MongoDB Docker behebt: Can't initialize rotatable log file :: caused by :: Failed to open /var/log/mongodb/mongod.log
Problem
Beim Starten deines MongoDB-Docker-Containers siehst du 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
Du hast 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 deiner docker-compose.yml:
services:
mongodb:
image: mongo
container_name: mongodb
ports:
- "27017:27017"
volumes:
- ./mongodb_data:/data/db
- ./mongodb_log:/var/log/mongodbDu musst die Berechtigungen des Host-Verzeichnisses ./mongodb_log korrigieren, damit der Benutzer im Container darin schreiben kann.
Du kannst dies tun, indem du den folgenden Befehl auf deinem Host-System ausführst:
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 du den Fehler für die Log-Meldung erhältst, kannst du auch die Berechtigungen des Datenverzeichnisses gleichzeitig korrigieren.