ubuntuusers.de

psql in docker installieren

Status: Gelöst | Ubuntu-Version: Ubuntu 17.04 (Zesty Zapus)
Antworten |

VolkerRaschek

Avatar von VolkerRaschek

Anmeldungsdatum:
19. August 2014

Beiträge: 358

Wohnort: Eifel

Hallo zusammen, ich benötige die Anwendung psql in einem Docker container. Allerdings weiß ich nicht wie ich psql ohne postgres-server installieren kann.

Gibt es da irgend ein bestimmtes Paket oder kann ich das aus irgendeinem Quellcode kompilieren ohne postgres-server?

Ich weiß einfach nicht wie ich ausschließlich psql installieren kann.

Volker

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17528

Also nur psql wirst du nicht bekommen, aber das Paket postgresql-clients dürfte sein was du suchst. Die Frage ist aber warum du ein Client tool in einem Docker Container brauchst?

mfg Stefan

VolkerRaschek

(Themenstarter)
Avatar von VolkerRaschek

Anmeldungsdatum:
19. August 2014

Beiträge: 358

Wohnort: Eifel

Also mein Sachverhalt ist so.

Ich habe drei Container in Docker. Postgres als Datenbank, nginx als Proxy und Apache+PHP mit einer kleinen simplen Anwendung. Wenn ich nun über docker-compose meine Instanzen starte, dann kann ich nicht davon ausgehen, dass mein Datenbankmodell vorhanden ist für die PHP Anwendung. Jetzt habe ich den SQL-Dump exportiert und möchte gerne bei jedem gestarteten Apache + PHP Prozess das überprüft wird, ob meine Datenbank auch das Schema bzw. Datenbankmodell besitzt. Dafür möchte ich gerne mittels psql eine Datenbankverbindung aufbauen und den Dump in die DB schieben um eventuell das Schema bzw Modell anzulegen.

Ich weiß momentan keine bessere Lösung.

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17528

Die Datenbanken an sich fehlen auch noch, richtig? Es geht also nicht nur ums Schema, sondern komplett um das initiale Anlegen der DBs.

mfg Stefan

VolkerRaschek

(Themenstarter)
Avatar von VolkerRaschek

Anmeldungsdatum:
19. August 2014

Beiträge: 358

Wohnort: Eifel

Ja, es soll die Datenbank initialisiert werden beim ersten Start der PHP-Anwendung. Wenn ich allerdings die PHP-Anwengung skaliere, dann soll er mir das Schema natürlich nicht erneut anlegen, da es bereits durch die erste Instanz erzeugt wurde.

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17528

Also ist es nicht pro Instanz ein Schema, sondern alle Instanzen teilen sich das. Dann würde ich das Schema durch den DB Container anlegen lassen, da dieser ja wohl nur einmalig laufen soll.

mfg Stefan

VolkerRaschek

(Themenstarter)
Avatar von VolkerRaschek

Anmeldungsdatum:
19. August 2014

Beiträge: 358

Wohnort: Eifel

Achso, ja ich möchte gerne Schema-per-Service einrichten. Wobei es von dem Service mehrere Instanzen gibt.

Das mit dem extra Container ist gar nicht so eine dumme Idee.

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17528

Eine andere Idee, aber die ist dir hoffentlich nicht zu genial:

  1. Ubuntu ist ja wohl die Basis für deinen PostgreSQL Container

  2. Auf Basis von diesem PostgreSQL Container erstellst du einen der beim Start die nötigen Dinge anlegt

  3. Deine anderen Container hängen immer vom PostgreSQL Container mit der jeweils passenden DB ab.

mfg Stefan

VolkerRaschek

(Themenstarter)
Avatar von VolkerRaschek

Anmeldungsdatum:
19. August 2014

Beiträge: 358

Wohnort: Eifel

Auch keine schlechte Idee. Ich habe nun einen neuen Service geschrieben, "dumper". Der Service besitzt psql und verbindet sich mit der postgresdb und führt dort dann meine dump.sql Datei aus.

Antworten |