Effettuare un dump di un database MongoDB che gira all'interno di un container Docker è una pratica comune per il backup o la migrazione dei dati. In questa guida vedremo i passaggi fondamentali per eseguire correttamente un dump del database utilizzando mongodump
.
Prerequisiti
- Docker installato sulla macchina
- Un container MongoDB in esecuzione
- Accesso alla shell del container o possibilità di usare
docker exec
1. Identificare il nome del container
Prima di tutto, individua il nome o l'ID del container MongoDB:
docker ps
Cerca la riga con l'immagine MongoDB (es. mongo
) e annota il nome del container, ad esempio mongodb-container
.
2. Eseguire il dump usando mongodump
Utilizza il comando mongodump
all'interno del container per creare un backup del database:
docker exec -it mongodb-container mongodump --out /data/dump
Questo comando crea un dump di tutti i database nella directory /data/dump
all'interno del container.
3. Copiare il dump all’esterno del container
Una volta creato il dump, puoi copiarlo dalla directory interna del container al tuo host:
docker cp mongodb-container:/data/dump ./dump
Questo salverà i dati nella directory ./dump
sul tuo sistema locale.
4. Dump di un database specifico
Se vuoi effettuare il dump di un singolo database, puoi usare l'opzione --db
:
docker exec -it mongodb-container mongodump --db nome_database --out /data/dump
5. Opzionale: autenticazione
Se il tuo MongoDB richiede autenticazione, puoi specificare utente, password e database di autenticazione:
docker exec -it mongodb-container mongodump \
--db nome_database \
--username tuo_utente \
--password tua_password \
--authenticationDatabase admin \
--out /data/dump
6. Esempio di struttura del dump
Il risultato sarà una struttura di cartelle simile alla seguente:
dump/
└── nome_database
├── collection1.bson
├── collection1.metadata.json
├── collection2.bson
└── collection2.metadata.json
Conclusione
Utilizzare mongodump
in combinazione con Docker è un modo semplice e veloce per eseguire backup di database MongoDB. Ricordati di eseguire regolarmente il dump dei dati, specialmente in ambienti di produzione.