Come effettuare il dump di un database PostgreSQL in Docker

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.