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.