EleLa - Elektronik Lagerverwaltung Hilfe

Tutorial - Docker

Docker ist eine schlanke Visualisierungsanwendung mit der Container von anderen Entwicklern ausgeführt werden können. Container können über den "Docker-Hub" geladen und installiert werden.

Unter einem Linux System kann man Docker installieren und anschließend kann man einen Container laden und starten. Hier in diesem Tutorial wird gezeigt wie man einen PostgreSQL Server auf einer Discstation über Docker installiert und einrichtet.

Es gibt auch andere SQL Server die man so relativ leicht laden und starten kann. Man kann sogar den gleichen SQL Server mehrfach starten, somit können unterschiedliche Programme in getrennte Server ausgeführt werden.

Der Vorteil: damit installiert man den SQL Server nicht direkt in das System sondern läuft innerhalb des virtuellen Containers getrennt vom System. Per Netzwerk ist dieser Container dann von außen erreichbar, was bei einem Datenbankserver völlig ausreichend ist.

In diesem Beispiel wird die Installation auf einer Synology Discstation durchgeführt.

  1. Vorbereitung Docker installation
  2. Vorbereiten des Dateisystems
  3. Vorbereitung der Firewall
  4. Laden des Containers mit dem Datenbank-Server
  5. Starten des Containers
  6. Docker Container per Kommandozeile anlegen
  7. Container
  8. Benutzer in der PostgreSQL Datenbank
  9. Die Konfiguration in EleLa um auf die Datenbank zu gelangen
  10. Administrieren der PostgreSQL Datenbank mit pgAdmin 4

Vorbereitung Docker installation

Installation von "Docker" aus dem "Paket-Zentrum".

Vorbereiten des Dateisystems

Nun wurde der Container geladen und ist im Prinzip bereits lauffähig. Die Datenbank Dateien selbst möchte man vielleicht direckt auf der Discstation halten und nicht innerhalb vom Container. Daher macht es Sinn diesen einen Pfad in der Discstation an zu legen.

Dazu öffnet man die "FileStation", dieser zeigt nun alle Haupt-Ordner. Darin sollte nun ein Ordner "docker" als Hauptordner zu sehen sein. In diesem Ordner wird nun ein neuer Ordner "postgres" angelegt. Der Pfad da hin ist auf der Synology Discstation in der Regel "/volume1/docker/postgres". Bei anderen Linux Systemen kann das durchaus abweichen.

Vorbereitung der Firewall

Die Firewall muss den Zugriff auf den Port des neu installierten SQL Servers frei geben, in diesem Beispiel ist es Port "5433".

Bei der Synology Discstation kann die Firewall unter:

"Systemsteuerung" -> "Sicherheit" -> "Firewall" -> "Regeln bearbeiten"

parametriert werden. Hier wird eine neue Regel erstellt die den Portzugriff auf 5433 erlaubt.

Laden des Containers mit dem Datenbank-Server

  • Nun wird "Docker" geöffnet.
  • Unter "Registrierung" kann man nach "postgres" suchen
  • Aus der Liste den Eintrag "postgres" wählen
  • "Download" starten.
  • Im Dialog wählt man die Version aus die man laden möchte. In diesem Beispiel "13.1-alpine"

Anschließend wird der Container geladen und steht unter "Abbild" zur Verfügung. Dieses Beispiel lädt ca. 160MB.

Starten des Containers

Im Docker Fenster unter "Abbild" ist nun das geladene Image "postgres:13.1-alpine" verfügbar. Dieses wird angewählt und mit der Taste "Starten" wird der Container für den Start vorbereitet:

Der Container Name ist frei vergebbar, in diesem Beispiel "postgres".

In den "Erweiterte Einstellungen" müssen die Konfigurationen vorgenommen werden:

"Automatischen Neustart aktivieren" startet den PostgreSQL Server automatisch neu wenn die DiscStation neu startet oder wenn das Image wegen einem Fehler abstürzt.

In "Volume" wird der Ordner der Datenbank zur Discstation verknüpft, den man vorhin angelegt hat:

"/var/lib/postgresql/data"

Die Port-Einstellung muss gesetzt werden. In diesem Beispiel ist der Port "5432" vom Host System bereits belegt, um dennoch den PostgreSQL Container nutzen zu können kann Docker den Port umstellen, in diesem Beispiel wird der Port auf "5433" umgebogen:

Bei "Umgebung" werden noch ein paar zusätzliche Einstellungen getätigt wie z.B. das "Postgres" Passwort vergeben:

Variable Wert
POSTGRES_PASSWORD

Hier das Passwort eingeben für den Zugang mit dem User "postgres".
Beispiel: elela

Mit "+" kann eine neue Zeile hinzu gefügt werden und dann muss der Name der Variable sowie der Wert eingestellt werden.

Andere Docker Container haben entsprechend andere Parameter, die man hier einstellen kann. Infos können in der jeweiligen Internetseite des Herstellers des Containers nachgelesen werden.

Mit "Übernehmen" werden die Einstellungen gespeichert.

Man kommt zurück zum zuvorigen Dialog, mit "Weiter" werden nochmals alle Einstellungen gezeigt, mit "Übernehmen" wird der Container erstellt und gestartet.

Docker Container per Kommandozeile anlegen

Man kann diese vielen Dialoge sich sparen wenn man den Container per Kommandozeile mit root rechten anlegt, das Verzeichnis "/volume1/docker/postgres" muss dazu schon existieren.

docker container run -d --restart=always \
 --name=postgres \
 --network bridge \
 -v /volume1/docker/postgres:/var/lib/postgresql/data \
 -e POSTGRES_PASSWORD='elela' \
 -p 5433:5432 \
 postgres:13.1-alpine

Die Dialoge helfen zu Anfang um einen besseren Durchblick zu bekommen, die Kommandozeile hilft wenn man das mehrmals machen muss, spart Zeit.

Container

Im Abschnitt "Container" werden alle eingerichtete Container gezeigt. Man kann hier mehrere haben die jeweils getrennt voneinander laufen. Somit könnte man den PostgreSQL Server mehrfach angelegt haben, für jede Anwendung einen eigenen Container. Das vereinfacht die Wartung, bzw. sollte ein Update der Datenbank nötig sein kann man dies zu erst mit einem neuen Container testen ohne dass die Datenbank für die Produktion beeinträchtigt wird.

Bei Container sieht man zudem die CPU Belastung sowie den RAM Verbrauch. Wenn ein Container (z.B. "postges") ausgewählt ist kann man unter "Details" die Einstellungen sowie der Status überprüfen. Sollte z.B. ein Container nicht starten so steht unter "Protokoll" meist eine sinnvolle Fehlermeldung, z.B. dass noch eine Variable deklariert werden muss.

Der PostgreSQL Container ist recht genügsam, kommt mit sehr wenig CPU / RAM Verbrauch aus. Hingegen ein "microsoft/mssql-server-linux" benötigt für das nichts tun schon über 1% CPU und knapp 500MB RAM. Es gibt tausende weitere Docker Container die installiert werden können.

Die Detail-Ansicht:

Benutzer in der PostgreSQL Datenbank

Nach der Installation vom Postgres ist nur 1 Benutzer angelegt, der Systembenutzer "postgres" mit dem in der Variable "POSTGRES_PASSWORD" vergebenen Passwort. Wenn man es einfach haben möchte, so kann man dieses direkt mit EleLa benutzen. Wenn nicht muss man "pgAdmin" installieren und kann darüber einen neuen Benutzer anlegen.

Die Konfiguration in EleLa um auf die Datenbank zu gelangen

Eingestellt wird die TCP/IP Adresse von der Discstation (also der Server auf dem Docker läuft), der Port 5433 (den leitet Docker um in den Container), den Name der Datenbank, sowie User und Passwort (aus der Variable "POSTGRES_PASSWORD").
Mit "Erzeuge neue Datenbank" erstellt EleLa nun eine neue leere Datenbank im PostgreSQL Server.
"Speichern" und "Schließen" und EleLa neu starten, dann ist EleLa verbunden mit dem neuen PostgreSQL Server. Nun können die bestehenden Daten aus der SQLite Datenbank importiert werden.

Administrieren der PostgreSQL Datenbank mit pgAdmin 4

pgAdmin wird von EleLa selbst nicht benötigt da EleLa alle Werkzeuge bietet die Datenbank anlegen zu können. Wenn man zur Sicherheit einen anderen Benutzername haben möchte um auf die PostgreSQL Datenbank zuzugreifen so muss man dieses Tool dennoch nutzen, da EleLa die Benutzerverwaltung der Datenbank nicht administrieren kann.

Zu erst muss man pgAdmin installieren. Das geht mit 2 Varianten:

  • Installation eines Docker Containers mit pgAdmin
  • Installation auf einem Arbeitsplatz PC

Ich hatte versucht einen Docker Container mit pgAdmin zu installieren, leider wollte er bei meiner Discstation nicht starten.

Hingegen die Installation auf einem Desktop PC unter Windows hat gut funktioniert.

Server in pgAdmin registrieren:

Nach dem Start von pgAdmin erscheint der Webbrowser mit pgAdmin, darin wird die Konfiguration vorgenommen. Als erstes muss der Server in das pgAdmin verbunden werden:

"Servers" -> rechtsklick -> Menü "Create" -> "Server..."

Im Dialog:

General:
Name: z.B. "postgres1"

Connection:
Host name/address: <IP Adresse vom Server>
Port: 5433
Passwort: aus der Variable "POSTGRES_PASSWORD"

Taste "Save"

Neuen Benutzer mit pgAdmin anlegen:

Nun erscheint im linken Baum der neu hinzugefügte Server "postgres1". Wenn man diesen öffnet kann ein neuer Benutzer angelegt werden:

"Login/Group Roles" -> rechtsklick -> "Create" -> "Login/Group Roles..."

General:
Name: z.B. elela

Definition:
Password: z.B. elela

Privileges:
Can Login?: Yes
Create Databases?: Yes

Taste "Save"

Somit hat man nun einen neuen Benutzer "elela" mit Passwort, der als Benutzer in EleLa verwendet werden kann.


© 2010-2021 by Markus Müller