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

Sechs merkwürdige und nützliche Dinge über JavaScript

Inhaltsverzeichnis 1. Dekonstruktionstipps 2. Dig...

Der gesamte Prozess der Installation von Gogs mit Pagoda Panel und Docker

Inhaltsverzeichnis 1 Installieren Sie Docker im B...

HTML+CSS-Beispielcode für zusammengeführte Tabellenränder

Wenn wir Tabellen- und td-Tags Rahmen hinzufügen,...

Details zur Verwendung von JS-Array-Methoden some, every und find

Inhaltsverzeichnis 1. einige 2. jedes 3. finden 1...

So legen Sie die Anzahl der MySQL-Verbindungen fest (zu viele Verbindungen)

Während der Verwendung von MySQL wurde festgestel...

Freigabe der schnellen Wiederherstellungslösung für große MySQL-SQL-Dateien

Vorwort Bei der Verwendung einer MySQL-Datenbank ...

Detaillierte Erklärung der Befehle zum Anzeigen von Linux-Dateien

So zeigen Sie Linux-Dateien an Befehl zum Anzeige...

Detaillierte Schritte zum Erweitern der LVM-Festplatte unter Linux

1. Fügen Sie eine Festplatte hinzu 2. Überprüfen ...

HTML erstellt eine einfache und schöne Anmeldeseite

Schauen wir uns das zunächst einmal an. HTML Quel...

Erste Schritte mit den JavaScript-Grundlagen

Inhaltsverzeichnis 1. Wo man JavaScript schreibt ...