00:00 / 00:00
Docker + MongoDb: restaurar un backup
En el paso anterior vimos como instanciar un contenedor de Docker basado en una imagen que tuviera un MongoDB, y después nos pusimos por línea de comandos a crear una mini base de datos. Esto no esta mal, peeerooo en el mundo real, trabajamos con bases de datos que contienen un montón de información, lo normal es que restauremos un backup y nos pongamos a trabajar usando información cuanto menos parecida a la real.
¿Cómo podemos hacer ésto con Docker?
Manos a la obra
Vamos a asumir que ya tenemos nuestro contenedor de mongo del ejemplo anterior funcionando, podemos comprobarlo ejecutando el siguiente comando:
docker ps
En caso de que no, puedes seguir los primeros pasos del ejemplo anterior.
En nuestra carpeta de trabajo tenemos un backup de una base de datos de ejemplo que te provee mongoDB, puedes obetenerla en este enlace.
Aquí si estuviéramos en windows podríamos poner dir para ver los archivos, y en linux o MacOs tecleamos ls
ls
Aquí podemos ver una carpeta de backup, si entramos podemos ver el backup de varias colecciones
cd backup
ls
volvemos al nivel superior
cd ..
Ahora, tenemos que en nuestro disco duro local esta disponible el backup, pero nuestro contenedor de Docker que corre la imagen de Mongo tiene su propio espacio local, no puede acceder directamente a ese fichero, ¿Qué podemos hacer? Usando un comando de Docker podemos copiar ese fichero desde nuestro local a nuestro contenedor:
Aquí lo que hacemos es decirle que vamos a copiar el contenido de lo que hay en mi carpeta backup en el contenedor, en concreto lo copiaremos a la ruta /opt/app/
Para seguir los ejemplos puedes tanto utilizar el nombre del contenedor que hemos establecido al crearlo my-mongo-db o reemplazarlo por el identificador de contenedor de la instancia de mongo que estés ejecutando.
docker cp backup my-mongo-db:/opt/app
Ahora podemos entrar en nuestro contenedor:
docker exec -it my-mongo-db sh
Si queréis nos podemos ir a la ruta donde esta el backup
cd opt
cd app
Y restauramos el backup
mongorestore --db mymovies .
En este caso estamos esta leyendo el contenido desde la ruta opt/app
Ahora podemos seleccionar la base de datos restaurada
Arrancamos el terminal de mongo
mongo
Seleccionamos la base de datos recien restaurada:
use mymovies
Vemos que colecciones tenemos disponibles
show collections
Y ejecutamos una query contra la colección movies
db.movies.find().pretty()
Y como puedes ver tenemos todos los datos disponibles.
¿Te gusta el mundo Devops?
En Lemoncode impartimos un Bootcamp Devops Online, en él encontrarás todos los recursos necesarios: clases de los mejores profesionales del sector, tutorías en cuanto las necesites y ejercicios para desarrollar lo aprendido en los distintos módulos. Si quieres saber más puedes pinchar aquí para más información sobre este Bootcamp Devops.