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:

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"}}}

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:

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

Du 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:

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

Das 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.


Ähnliche Beiträge nach Kategorie: MongoDB, Docker