Wie erstelle ich einen DB für MongoDB Container beim Start?

11

Ich arbeite mit Docker und habe einen Stack mit PHP, MySQL, Apache und Redis. Ich muss MongoDB jetzt hinzufügen, also habe ich die Dockerfile für die neueste Version und auch überprüft die Datei docker-entrypoint.sh von MongoDB Dockerhub aber ich konnte keinen Weg finden, um eine Standard-DB, Admin-Benutzer / Passwort und möglicherweise Auth-Methode für den Container aus Eine docker-compose.yml -Datei.

In MySQL können Sie einige ENV-Variablen einrichten, zum Beispiel:

%Vor%

Und dies wird die DB und den Benutzer / das Passwort als root Passwort einrichten.

Gibt es eine Möglichkeit, dasselbe mit MongoDB zu erreichen? Jeder hat etwas Erfahrung oder Workaround?

    
ReynierPM 20.03.2017, 19:51
quelle

3 Antworten

25

Das offizielle mongo image hat hat eine PR integriert, um die Funktionalität hinzuzufügen , um Benutzer und Datenbanken beim Start zu erstellen.

Die Initialisierung der Datenbank wird ausgeführt, wenn im Verzeichnis /data/db nichts eingetragen ist.

Admin Benutzer Setup

Die Umgebungsvariablen zur Steuerung des Benutzer-Setups "root" sind

  • MONGO_INITDB_ROOT_USERNAME
  • MONGO_INITDB_ROOT_PASSWORD

Beispiel

%Vor%

Sie müssen --auth nicht in der Befehlszeile verwenden / können nicht, da das Skript docker entrepoint.sh dies hinzufügt, wenn die Umgebungsvariablen vorhanden sind.

Andere benutzerdefinierte Initialisierung

Das Image stellt außerdem den /docker-entrypoint-initdb.d/ -Pfad zur Verfügung, um benutzerdefinierte .js - oder .sh -Setup-Skripts bereitzustellen, die einmal bei der Initialisierung der Datenbank ausgeführt werden. .js -Skripts werden standardmäßig für test oder MONGO_INITDB_DATABASE ausgeführt, wenn sie in der Umgebung definiert sind.

%Vor%

oder

%Vor%

Eine einfache JavaScript-Initialisierungsdatei, die die Protokollierung und das Beenden mit einem Fehler (für die Ergebnisüberprüfung) demonstriert.

%Vor%     
Matt 21.03.2017, 02:58
quelle
8

Falls jemand nach der Konfiguration von MongoDB mit Authentifizierung mittels docker-compose sucht, folgt hier eine Beispielkonfiguration mit Umgebungsvariablen:

%Vor%

Wenn Sie docker-compose up ausführen, wird Ihre Mongo-Instanz automatisch mit aktivierter Authentifizierung ausgeführt. Sie haben eine Admin-Datenbank mit dem angegebenen Passwort.

    
user2350644 27.11.2017 11:37
quelle
0

das funktioniert für mich, aber das funktioniert nicht: docker run -d \   -e MONGO_INITDB_ROOT_USERNAME = admin \   -e MONGO_INITDB_ROOT_PASSWORD = Passwort \   Mongod

    
Jordi P 17.03.2018 18:54
quelle

Tags und Links