2016-03-29 6 views

Antwort

0

Am einfachsten wäre es, eine leere postgresql-Datenbank auf dem Host in einem separaten Ordner zu erstellen, dann den PostgreSQL-Daemon zu starten, dann die Daten zu importieren und dann einfach in den Container zu mounten. Mit dem folgenden Skript können Sie die DB im Ordner /tmp/postgres-mem erstellen und dann Daten in sie importieren.

#!/bin/bash 

export PGDIR=/tmp/postgres-mem 

pg_ctl -D "$PGDIR" stop 

rm -vfr "$PGDIR" 

mkdir "$PGDIR" 

pg_ctl init -D "$PGDIR" 

pg_ctl -D "$PGDIR" start -o "-h localhost -c fsync=off -c synchronous_commit=off -c full_page_writes=off -c log_destination='stderr' -c logging_collector=on -c log_directory='pg_log' -c log_filename='postgresql-%Y-%m-%d_%H%M%S.log' -c log_statement='all' -k /tmp/postgres-mem" 

sleep 3 

psql -h localhost -c 'create user cooluser with superuser' template1 
psql -h localhost -c 'create database "whatever"' template1 

und dann

psql -U cooluser whatever < your_dump_file.sql 

dann kopieren Sie den Inhalt von/tmp/Postgres-mem in Ihren Datencontainer

immer Sie this approach betrachten möchten.

+0

Der Ursprung wurde PostgreSQL-Instanz nicht so der Ansatz, den Sie in Allerdings arbeiten nicht vorschlagen Dockerized wiederherzustellen. – JohnDoe

+0

Okay, Sie müssen immer noch ein Dateisystem mit der Datenbank für die spezifische postgresql-Instanz initialisieren. Und es ist nicht wirklich wichtig, wie du es bekommen würdest :) – jdevelop

1

Wie Stackoverflow penaltizes Antworten, die auf prägnante sind ich wiederholen, was there geschrieben:

  1. eine Daten erstellen nur Behälter
  2. Führen Sie einen temporären Postgres Container die Sicherung wiederherstellen. Hängen Sie den Container "Nur Daten" UND das Verzeichnis an, das die lokale Sicherung enthält.
  3. An den Wiederherstellungscontainer anhängen. Innerhalb des Containers
  4. Wechseln Sie zum postgresql-Benutzer
  5. Erstellen Sie den Superuser und passendes Kennwort für die wiederherzustellende Datenbank.
  6. Verlassen Sie die psql-Sitzung mit \ q. Noch innerhalb des Containers
  7. die Sicherung an der Eingabeaufforderung wiederherstellen
  8. Erstellen Sie den endgültigen Docker Postgres Container. Hinweis: Geben Sie den korrekten Namen der Datenbank an, aus der die Wiederherstellung im vorherigen Schritt durchgeführt wurde.
  9. den Container löschen verwendet, um die Sicherung in die Daten nur Volumen
+0

Deine Antwort wird bedeutungsvoller, wenn du uns auch Beispielbefehle für jede/Pflichtschritte zeigst !! Prost – Sarz