Docker-Compose MongoDB

Docker-Compose MongoDB

Aufrechterhaltung des Zustands Ihres Mongo -Containers über Aktualisierungen hinweg aufrechterhalten.

Tl; dr

Für diejenigen, die mit den Funktionen von MongoDB- und Docker-Bänden vertraut sind, und auch für diejenigen, die nur einen schnellen Ausschnitt Docker-Compose wünschen.YML für ihr Projekt ohne viele ausführliche Details. Hier finden Sie eine Komponierungsdatei, die den Trick ausreicht. Erstellen Sie ein neues Verzeichnis namens Mongodb und erstellen Sie eine Datei namens Docker-Compose.YML und geben Sie den folgenden Inhalt hinein:

Version: '3'
Dienstleistungen:
My-MongoDB:
Bild: Mongo: Neueste
Bände:
- db-data:/data/db
- Mongo-Config:/data/configDB
Bände:
DB-Daten:
Mongo-Config:

Speichern Sie die Datei und laufen Sie aus demselben Verzeichnis aus:

$ docker -compose up -d

Dadurch wird ein MongoDB-Dienst mit zwei Bänden mit dem Namen db-data und mongo-config gestartet, wenn eine neue Version von MonogDB das nächste Mal rennt:

$ docker-compose down

Entfernen Sie das aktuelle Bild Docker RMI Mongo Download den neuen One Docker Pull Mongo: Last und Run:

$ docker -compose up -d

Keiner Ihrer Daten geht verloren, solange Sie das Docker-Volumes für DB-Data und Mongo-Config nicht absichtlich entfernen. Möglicherweise möchten Sie natürlich Dienste für Ihren Front-End-Webserver und andere verschiedene Dienste hinzufügen.

Was haben wir getan?

Nun, ich kann Ihnen nur sagen, wo MongoDB erwartet. Dies würde Ihnen jedoch nicht helfen, Ihre eigene Komponierungsdatei für Ihre eigene benutzerdefinierte Anwendung zu schreiben. Vielleicht verwenden Sie keine MongoDB, sondern Mariadb oder Postgres. Machen wir einen Schritt zurück und untersuchen Sie einen MongoDB.

Beginnen wir mit einer Clean Slate Docker -Installation. Kein laufender Container, keine benutzerdefinierten Netzwerke, keine Volumes. Lassen Sie uns einen MongoDB -Behälter mit CLI durchführen:

$ docker run -d -name mydb mongo: neuest

Wenn wir nun Container, Volumina und Netzwerke wie unten gezeigt auflisten, werden wir einige neue Mitglieder sehen:

$ docker ps
Befehl container -ID -Bild erstellt Statusports Namen Namen
F22758A73BA0 Mongo: neuestes "Docker-Eingangpoint.S… "Vor 7 Sekunden 7 Sekunden 27017/TCP MyDB
$ Docker Volume LS
Treiberbandname
LOCAL C5F99E7D82894C1A1DEF4C48EDFDF43220EEBF6B92FCD49A15C0CAFE0325D369
LOCAL DAA36A6F496075EF30BAF9B6AF9F6B6CFB9C60E96CED88C102E27381C243233
$ Docker Network LS
Treiberumfang der Netzwerk -ID -Namen
C41B287F67AB Bridge Bridge Local
A49B31643FA9 Host Host Local
A69138357C76 Keine NULL LOCAL

In den Abschnitt Netzwerke wurde nichts Neues hinzugefügt (nur die Standardeinstellungen werden gezeigt), aber zwei neue Bände wurden mit langen Hashes als Name erstellt.

Der neue Container heißt MYDB und enthält Port 27017. Hier kann ein Mongo -Client eine Verbindung herstellen und aus lesen oder in die Datenbank schreiben. Lassen Sie uns diesen Behälter weiter untersuchen:

$ docker inspecy mydb

"Anschlüsse": [

"Typ": "Volumen",
"Name": "DAA36A6F496075EF30BAF9B6AF9F6B6CFB9C60E96CED88C102E27381C243233",
"Quelle": "/var/lib/docker/volumes/daa36a6f496075ef30bAF9b6af9f6b6cfb9c60e96ced88c102e273
81C243233/_data ",
"Ziel": "/data/configDB",
"Fahrer": "Lokal",
"Modus": "",
"Rw": wahr,
"Ausbreitung": ""
,

"Typ": "Volumen",
"Name": "C5F99E7D82894C1A1DEF4C48EDFDF43220EEBF6B92FCD49A15C0CAFE0325D369",
"Quelle": "/var/lib/docker/volumes/c5f99e7d82894c1a1def4c48edfdf43220eebf6b92fcd49a15c0cafe
0325
d369/_data ",
"Ziel": "/data/db",
"Fahrer": "Lokal",
"Modus": "",
"Rw": wahr,
"Ausbreitung": ""

],

In dieser langen JSON -Ausgabe, die nach Ausführen des Befehls inspizieren würde, werden Sie feststellen. Dies sind die Docker -Bände, die wir zuvor im Container montiert wurden,. Die Mountspunkte sind /data /configDB und /daten /dB.
Nach dem Entfernen des Behälters:

$ docker rm -f mydb

Die Bände sind noch intakt und Sie können sie immer noch auflistet (Docker Volumes LS). So sind alle vom MongoDB -Behälter gespeicherten Informationen bei uns sicher. Wenn wir jedoch versuchen, den MongoDB -Container noch einmal auszuführen.

$ docker run -d -name mydb2 mongo: neuest

Und listen Sie dann die Volumes (Docker Volume LS) auf, Sie werden feststellen, dass zwei neue Bände erstellt und montiert werden. Die Informationen, die wir möglicherweise in den älteren Bänden beibehalten haben, werden nicht verwendet. Wir müssen dieses Problem umgehen, indem wir uns selbst Bände benennen und sie dann im Behälter an ihren jeweiligen Bergpunkten montieren. Auf diese Weise, wenn ein neuer Ersatz -MongoDB.

Um dies zu erreichen, beziehen wir uns auf den Docker-Compose.YML -Datei im TL; DR -Abschnitt erwähnt und macht uns jetzt etwas sinnvoller.

Verbindung zu MongoDB herstellen

Möglicherweise haben Sie noch keine Front-End-Anwendung bereit. Wenn Sie möchten, können Sie weiterhin eine Verbindung zum MongoDB -Server herstellen, eine neue Datenbank darin erstellen und einige Schlüsselwertpaare hinzufügen. Es ist keine typische SQL-Datenbank, sondern eine Art Schlüsselwertspeicher. Um dies in Aktion zu sehen, installieren Sie MongoDB Compass, ein Client -Programm, das Sie auf Ihrem Desktop oder Laptop ausführen können, um eine Verbindung zum Datenbankserver herzustellen.

Sie müssen dies nicht für Produktionszwecke tun, Container im selben Netz. Um dies zu tun, ändern Sie Ihren Docker-Compose.YML -Datei wie gezeigt:

Version: '3'
Dienstleistungen:
My-MongoDB:
Bild: Mongo: Neueste
Häfen:
- 27017: 27017
Bände:
- db-data:/data/db
- Mongo-Config:/data/configDB
Bände:
DB-Daten:
Mongo-Config:

Bringen Sie die Bereitstellung erneut auf, indem Sie die Bereitstellung neu erstellen, wenn Sie bereits einen ausgeführt haben:

$ docker -compose up -d

Das nächste, was Sie tun möchten. Dies ist möglicherweise die Adresse Localhost: 27017 Wenn Sie Mongo -Container auf Ihrem lokalen Computer ausführen. Wenn es anderswo ausgeführt wird, verwenden Sie die IP -Adresse oder den Domänennamen dieses Geräts mit derselben Portnummer.

Klicken Sie in der unteren Ecke auf Verbindung und Sie werden mit der Datenbank verbunden.

Erstellen wir eine neue Datenbank und nennen Sie sie mydatabase und innerhalb der MyCollection.

Innen Mydatabase> mycollection klicke auf Dokument einfügen. Hier können wir ein paar Dummy -Daten hinzufügen:

Sie können jetzt versuchen, den Einsatz zu senken und kurzlebige Behälter loszuwerden. Bringen Sie es wieder mit neueren Containern zurück und Sie werden feststellen, dass die von uns erstellten Daten immer noch vorhanden sind.

Abschluss

Hier haben wir gesehen, wie man den MongoDB -Container für Ihre Anwendung läuft und verwendet. Trotzdem ist viel zu tun, was beispielsweise unausgesprochen wurde, die Datenbank mit einem Passwort zu sichern, Daten abzufragen und die Datenbank zu skalieren.

Sie können hier mehr darüber erfahren oder die Dokumente in Ihrer Freizeit hier lesen.