Fork me on GitHub

PostgreSQL Datenbank mit Docker

2 Aug 2017

Gerade bin ich über einen super Blog Post gestolpert der mir wieder gezeigt hat wie toll Docker ist. In dem Blog beschreibt der Author wie er mit Hilfe von Docker eine Postgres Datenbank startet. Diese Postgres Datenbank steht dann unter dem Standard PostgreSQL Port 5432 unter localhost anderen Anwendungen zur Verfügung. Ganz so als hättet ihr die Postgres Datenbank lokal auf eurem System installiert.

Die Datenbank ist aber nicht lokal auf eurem System installiert. Sie wird mit Docker in einem Container (eine virtuelle Umgebung) gestartet. Docker kümmert sich dann darum das die Anfragen in diese virtuelle Umgebung geleitet werden.

Lange Rede kurzer Sinn…. Lasst den Code sprechen :)

docker run --rm --detach --name postgres --env POSTGRES_USER=username --env POSTGRES_PASSWORD=password --publish 127.0.0.1:5432:5432 postgres

Dieser Befehl startet docker. Der letzte Parameter postgres ist das so genannte IMAGE welches Docker startet. Ein IMAGE ist ein komplettes Linux mit installierten und konfigurierten Anwendungen, in diesem Fall halt Postgres. Ihr fragt nun sicher: “Wo bekomme ich den dieses Image?”. Das Image ist online verfügbar unter hub.docker.com, es ist vom Image Ersteller in die Cloud hoch geladen worden und steht nun der Welt zur Verfügung. Wenn ihr dieses Image noch nie genutzt habt, läd Docker es beim ersten Start herunter, alle weiteren Starts werden dann diese lokale Version verwenden.

Der Parameter --rm sorgt dafür, dass wenn dieser laufende Docker Container beendet wird, alle Dateien gelöscht werden. Achtung das zeigt das dieser Befehl wirklich nur für die Entwicklung und NICHT FÜR PRODUKTION verwendet wird!

--detach lässt den Container im Hintergrund laufen.

Die --env Parameter sind eine Möglichkeit Daten in den Container zu übertragen. In diesem Fall ein Postgres Benutzer und Password. Der Ersteller des Image hat es so konfiguriert dass wenn diese Daten vorhanden sind, diese automatisch in Postgres eingetragen werden. Das ist aber von Image zu Image unterschiedlich.

Last but not least sorgt der Parameter --publish dafür das der locale Port 5432 im Container nach Außen geleitet wird. Euer locales System besitzt, wenn der Container läuft, dann unter der Adresse localhost:5432 eine Postgres Datenbank.

Installiert/ Startet doch einfach mal das Tool pgAdmin und verbindet euch auf auf euer lokales System Port 5432 (localhost:5432).

"Example Konfiguration pgAdmin"

Beenden kann man die ganze Magie mit dem Befehl:

docker stop postgres

Wie schon weiter oben gesagt löscht Docker alle Dateien die zur Laufzeit des Containers erstellt wurden. Eure Daten sind danach weg!

Das Ganze hat den Vorteil das das lokale System völlig unberührt bleibt. Ich meine eine Postgres Datenbank ist jetzt nicht wirklich eine riesen Anwendung, aber wenn ich da an meine letzten Debian Entwicklungssysteme zurück denken, dann hatte ich da immer eine Postgres Datenbank im Hintergrund laufen, die auch bei jedem Reboot gestartet wurde. Und das nur weil ich MAL eine Datenbank brauchte und die dann halt lokal installiert hatte.

Dieser Blog Post ist nicht als Anleitung von Docker zu sehen. Wenn euch die hier beschriebenen Sachen überhaupt nichts sagen, dann besucht bitte unbedingt die Docker Webseite und lest euch in das Thema ein.

comments powered by Disqus