Ich musste grade von meiner Postgres-DB einen Dump ziehen und auf eine zweite DB wieder einspielen.
Problem dabei: ich habe Postgres (pg_dump, psql) nicht auf meinem Host System installiert und möchte daher Docker verwenden.
Zuerst habe ich alle relevanten Parameter in eine Datei (.env) gespeichert:
POSTGRES_USER=myuser POSTGRES_PASSWORD=mypassword POSTGRES_DB=mydatabase POSTGRES_HOST=localhost POSTGRES_PORT=5432 POSTGRES_BACKUPFILE=backup.sql
Dann habe ich mir source .env
die Parameter als Umgebungsvariablen in meiner Shell gesetzt und konnte dann ein Backup meiner Datenbank erstellen:
docker run --rm \ --network=host \ -e PGPASSWORD=$POSTGRES_PASSWORD \ postgres:17.2 \ pg_dump -h $POSTGRES_HOST -U $POSTGRES_USER $POSTGRES_DB > $POSTGRES_BACKUPFILE
Anschließend habe ich die Parameter (zB Hostname) für das Zielsystem angepasst und wieder source .env
ausgeführt um dann das Backup auf der Ziel-DB einspielen zu können:
docker run --rm \ --network=host \ -v ./$POSTGRES_BACKUPFILE:/script.sql \ -e PGPASSWORD=$POSTGRES_PASSWORD \ postgres:17.2 \ psql -h $POSTGRES_HOS -p $POSTGRES_PORT -U $POSTGRES_USER -d $POSTGRES_DB -f script.sql