PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Fehler:Postgres-Datenbankimport in Docker-Container

Einen Datenbank-Dump-Mount einrichten

Sie müssen den Dump in den Container mounten, damit Sie darauf zugreifen können. So etwas in docker-compose.yml:

db:
  volumes:
    - './db_dump:/db_dump'

Erstellen Sie ein lokales Verzeichnis mit dem Namen db_dump und platzieren Sie Ihre db_dump.gz dort ablegen.

Datenbankcontainer starten

Verwenden Sie POSTGRES_DB in der Umgebung (wie Sie in Ihrer Frage erwähnt haben), um die Datenbank automatisch zu erstellen. Starten Sie db allein, ohne den Rails-Server.

docker-compose up -d db

Daten importieren

Warten Sie einige Sekunden, bis die Datenbank verfügbar ist. Importieren Sie dann Ihre Daten.

docker-compose exec db gunzip /db_dump/db_dump.gz
docker-compose exec db psql -U postgres -d dbname -f /db_dump/db_dump.gz
docker-compose exec db rm -f /db_dump/db_dump.gz

Sie können auch einfach ein Skript erstellen, um diesen Import durchzuführen, es in Ihr Bild einfügen und es dann mit einem einzigen docker-compose-Befehl aufrufen. Oder Sie können Ihr Einstiegsskript prüfen lassen, ob eine Dump-Datei vorhanden ist, und wenn ja, entpacken und importieren ... was auch immer Sie tun müssen.

Starten Sie den Rails-Server

docker-compose up -d web

Dies automatisieren

Wenn Sie dies zur Vorbereitung eines neuen Setups von Hand tun, sind Sie fertig. Wenn Sie dies in einer Toolchain automatisieren müssen, können Sie einige dieser Dinge in einem Skript erledigen. Starten Sie einfach die Container separat, führen Sie den DB-Import dazwischen durch und verwenden Sie sleep um eventuelle Startverzögerungen abzudecken.