Come effettuare il dump di un database PostgreSQL in Docker

Effettuare il dump di un database PostgreSQL che gira in un container Docker è una procedura utile per backup, migrazione o analisi offline. In questo articolo vedremo come eseguire questa operazione passo dopo passo.

Prerequisiti

  • Docker installato e funzionante
  • Accesso al container PostgreSQL
  • Credenziali del database (utente, password, nome del database)

1. Identificare il nome del container

Per prima cosa, dobbiamo sapere come si chiama il container in cui è in esecuzione PostgreSQL:

docker ps

Cerca un container con un'immagine tipo postgres e prendi nota del nome o dell'ID.

2. Eseguire il dump dal container

Puoi usare il comando pg_dump all'interno del container per effettuare il dump del database:

docker exec -t nome_container pg_dump -U nome_utente nome_database > dump.sql

Ad esempio:

docker exec -t my_postgres_container pg_dump -U postgres mydb > backup_mydb.sql

Questo comando salva il file backup_mydb.sql nella directory locale da cui esegui il comando.

3. Specificare la password (opzionale)

Se il database richiede una password, puoi passare la variabile PGPASSWORD nel comando:

docker exec -e PGPASSWORD=mia_password -t nome_container pg_dump -U nome_utente nome_database > dump.sql

4. Dump con compressione

Per comprimere direttamente il dump puoi usare gzip:

docker exec -t nome_container pg_dump -U nome_utente nome_database | gzip > dump.sql.gz

5. Dump da un container esterno

In alternativa, puoi usare un container temporaneo per collegarti al database e scaricare il dump, utile quando non vuoi installare PostgreSQL localmente:

docker run --rm \
  --network container:nome_container \
  -e PGPASSWORD=mia_password \
  postgres pg_dump -h localhost -U nome_utente nome_database > dump.sql

6. Ripristino del dump

Per ripristinare un dump SQL nel container PostgreSQL puoi usare:

cat dump.sql | docker exec -i nome_container psql -U nome_utente nome_database

Oppure, se il file è compresso:

gunzip -c dump.sql.gz | docker exec -i nome_container psql -U nome_utente nome_database

Conclusione

Effettuare il dump di un database PostgreSQL in ambiente Docker è semplice e flessibile. Utilizzando docker exec o un container temporaneo, è possibile automatizzare facilmente backup e restore dei dati.

Torna su