Lösung zum Erstellen mehrerer Datenbanken, wenn Docker PostgreSQL startet

Lösung zum Erstellen mehrerer Datenbanken, wenn Docker PostgreSQL startet

1 Einleitung

Im Artikel „PostgreSQL mit Docker starten und mehrere Verbindungstools empfehlen“ haben wir vorgestellt, wie man PostgreSQL über Docker startet, aber es gibt nur eine Datenbank. Was ist, wenn Sie mehrere Datenbanken im selben Docker Container erstellen möchten?

2 Zwei Lösungen

Eine Lösung besteht darin, shell/sql -Skript in das Verzeichnis /docker-entrypoint-initdb.d/ zu legen und es beim Starten des Containers automatisch erstellen zu lassen; die andere Lösung besteht darin, die Erstellung über ein shell -Skript anzugeben, was im Wesentlichen dasselbe ist. Hier wird nur der erste vorgestellt.

Legen Sie das shell -Skript oder sql -Skript in das angegebene Verzeichnis und es wird automatisch ausgeführt. Beide Skripte sind zulässig.

Das Folgende ist ein Beispiel für shell -Skript:

#!/bin/bash

setze -e
setze -u

Funktion Benutzer_und_Datenbank erstellen() {
	lokale Datenbank=$1
	echo "Erstelle Benutzer und Datenbank '$database'"
	psql -v ON_ERROR_STOP=1 --Benutzername "$POSTGRES_USER" <<-EOSQL
	    BENUTZER $database ERSTELLEN;
	    DATENBANK ERSTELLEN $database;
	    Gewähren Sie alle Berechtigungen für die Datenbank $database an $database.
EOSQL
}

wenn [ -n "$POSTGRES_MULTIPLE_DATABASES" ]; dann
	echo "Erstellung mehrerer Datenbanken angefordert: $POSTGRES_MULTIPLE_DATABASES"
	für db in $(echo $POSTGRES_MULTIPLE_DATABASES | tr ',' ' '); machen
		Benutzer_und_Datenbank erstellen $db
	Erledigt
	echo "Mehrere Datenbanken erstellt"
fi

Das Folgende ist ein Beispiel für ein sql -Skript:

BENUTZER pkslowuser ERSTELLEN;

DATENBANK ERSTELLEN logdaten;
Gewähren Sie pkslowuser alle Berechtigungen für die Datenbank-Logdaten.

DATENBANK ERSTELLEN Bestelldaten;
Gewähren Sie pkslowuser alle Berechtigungen für die Datenbank Orderdata.

DATENBANK ERSTELLEN Benutzerdaten;
Gewähren Sie pkslowuser alle Berechtigungen für die Datenbank Benutzerdaten.

3 Verpackung und Inbetriebnahme

Bereiten Sie Dockerfile vor und fügen Sie shell/sql -Skriptdatei in das Image ein:

VON postgres:10
KOPIEREN src/main/resources/create-multiple-postgresql-databases.sh /docker-entrypoint-initdb.d/
KOPIEREN src/main/resources/create-multiple-postgresql-databases.sql /docker-entrypoint-initdb.d/

Beginnen Sie wie folgt:

docker run -itd \
    --name pkslow-postgres \
    -e POSTGRES_MULTIPLE_DATABASES=db1,db2 \
    -e POSTGRES_USER=pkslow \
    -e POSTGRES_PASSWORD=pkslow \
    -p 5432:5432 \
    pkslow/postgresql-mehrere-datenbanken:1.0-SNAPSHOT

Nach dem erfolgreichen Start wird folgende Datenbank erstellt:

db1, db2,
Logdaten, Auftragsdaten, Benutzerdaten

4 Fazit

Dies ist eine Lösung, die in der Entwicklungs- und Testphase verwendet wird. Tatsächlich ist es keine gute Wahl, die Datenbank in einem Container zu platzieren.

Bitte überprüfen Sie den Code: https://github.com/LarryDpk/pkslow-samples

Damit ist dieser Artikel über das Erstellen mehrerer Datenbanken beim Starten von PostgreSQL mit Docker abgeschlossen. Weitere Informationen zum Starten von PostgreSQL mit Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Informationen zur Docker-Bereitstellung einer PostgreSQL-Datenbank
  • Ausführen von PostgreSQL in Docker und Empfehlung verschiedener Verbindungstools
  • So installieren Sie Postgres 12 + pgadmin im lokalen Docker (unterstützt Apple M1)
  • Detaillierte Schritte zum Upgrade von PostgreSQL in der Docker-Umgebung
  • So installieren und speichern Sie die PostgreSQL-Datenbank in Docker
  • So führen Sie PostgreSQL mit Docker aus
  • Beispielcode für Datenbanksicherung in einer Docker-Umgebung (PostgreSQL, MySQL)
  • So stellen Sie Docker bereit, um auf die Postgres-Datenbank zuzugreifen

<<:  Analysieren des MySQL-Binärprotokolls

>>:  So implementieren Sie Seitensprünge in einem Vue-Projekt

Artikel empfehlen

Führen Sie die Schritte zur Installation der Boost-Bibliothek unter Linux aus

Vorwort Die Boost-Bibliothek ist eine portable, m...

Der Unterschied zwischen den Feldtypen char, varchar und Text in MySQL

In MySQL können alle Felder der Typen char, varch...

MySQL-Einschränkungen - Super detaillierte Erklärung

Inhaltsverzeichnis MySQL-Einschränkungsoperatione...

50 superpraktische Tools für Webdesigner

Webdesigner zu sein ist nicht einfach. Sie müssen...

Zusammenfassung der Wissenspunkte zur MySQL-Master-Slave-Replikation

Eine Optimierungslösung, wenn ein einzelner MySQL...

Der Unterschied und die Wahl zwischen Datum und Uhrzeit und Zeitstempel in MySQL

Inhaltsverzeichnis 1 Unterschied 1.1 Raumbelegung...

Praktisches Tutorial zum Ändern des MySQL-Zeichensatzes

Vorwort: In MySQL unterstützt das System viele Ze...

Erläuterung zu JavaScript-Anti-Shake und -Throttling

Inhaltsverzeichnis Stabilisierung Drosselung Zusa...

Beispiel für die MySQL-Methode zum Löschen von Daten und Datentabellen

Es ist sehr einfach, Daten und Tabellen in MySQL ...