Alle docker run
Befehle unten können natürlich auch mit bereits laufenden PG-Containern durch docker exec
ersetzt werden!
# ACHTUNG: nur in einer `bash`, nie in einer `zsh` ausführen =)
read -p "DB Host: " PG_HOST
read -p "DB Name: " PG_DB
read -p "DB User: " PG_USER
read -sp "DB Password: " PG_PW
echo
Für das Backup wollen wir im DB-Container keinen Input erzeugen / verarbeiten – uns interessiert ausschließlich die Ausgabe. Deshalb nutzen wir ausschließlich -t
als Interaktionsparameter für den docker
Befehl.
docker run --rm -t -e "PGPASSWORD=${PG_PW}" "postgres:${PG_VERSION}" pg_dumpall -c -U "${PG_USER}" -h "${PG_HOST}" "${PG_DB}" > dump_`date +%d-%m-%Y"_"%H_%M_%S`.sql
Beim Restore wollen wir nur eine Eingabe im DB-Container verarbeiten und die Ausgabe interessiert uns nur marginal. Deshalb nutzen wir ausschließlich -i
als Interaktionsparameter für den docker
Befehl.
cat your_dump.sql | docker run --rm -i -e "PGPASSWORD=${PG_PW}" "postres:${PG_VERSION}" psql -U "${PG_USER}" -h "${PG_HOST}" "${PG_DB}"
docker run -it --rm -e "PGPASSWORD=${PG_PW}" "postres:${PG_VERSION}" psql -U "${PG_USER}" -h "${PG_HOST}" "${PG_DB}"