Skip to content

Instantly share code, notes, and snippets.

@macwinnie
Created July 24, 2022 19:43
Show Gist options
  • Save macwinnie/c0c8cbb4c9ceb8c2bbff7a0399bc3398 to your computer and use it in GitHub Desktop.
Save macwinnie/c0c8cbb4c9ceb8c2bbff7a0399bc3398 to your computer and use it in GitHub Desktop.
Docker – PostgreSQL Export und Import

PostgreSQL

Alle docker run Befehle unten können natürlich auch mit bereits laufenden PG-Containern durch docker exec ersetzt werden!

Vorbereitung

# 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

Backup

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

Restore

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}"

Connect / Work

docker run -it --rm -e "PGPASSWORD=${PG_PW}" "postres:${PG_VERSION}" psql -U "${PG_USER}" -h "${PG_HOST}" "${PG_DB}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment