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:

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

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:

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

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

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 Sie den Fehler für die Log-Meldung erhalten, können Sie auch die Berechtigungen des Datenverzeichnisses gleichzeitig korrigieren.


Check out similar posts by category: MongoDB, Docker