Docker + MongoDB

Instalando un servidor de MongoDB para desarrollo con Docker

Introducción

Cuando nos ponemos a trabajar con un backend, una de las primeras tareas que nos planteamos es tener la base de datos en local, para poder hacer todo tipo de pruebas rápidas sin fastidiar a los compañeros.

Hasta hace unos años lo más normal era instalarte en tu máquina el motor de base de datos de turno, por ejemplo MongoDB, ¿Qué problemas nos podemos encontrar siguiendo esta aproximación?

  • Puede que vayamos a instalar una versíon de un motor y nos de problemas en nuestra máquina.
  • Es un rollo cuando salimos del proyecto ir dejando "motores" zombies que ya no usamos.
  • Otras veces no tenemos exactamente la misma versión que producción y eso puede traer problemas.
  • También es muy normal, que hayas hecho tantas pruebas que quieras partir de una versión limpia, o asegurarte que no hay nada que hayas tocado diferente a producción, tanto en settings del motor con en contenido o estructura de tu base de datos.
  • El peor de los casos es cuando estamos entre dos proyectos y uno no usa la última versión del motor y la otra sí ¿Qué hacemos vamos desinstalando una e instalando la otra dependiendo del proyecto en el que estemos trabajando?

Temario

1 Mongo Docker I - Instalación

En esta lección vamos a ver como descargar la imagen de MongoDb de Docker Hub, arrancarla en un contenedor, y conectarnos a ella desde el shell.

Ver lección

2 Mongo Docker II - Backups

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 informnación parecida a la real.

¿Cómo podemos hacer ésto con Docker?

Ver lección

2 Mongo Docker III - Volumes

Hasta ahora hemos visto como correr un Mongo en un contenedor Docker y cómo restaurar un backup de una base de datos en el mismo contenedor, esto está genial, pero...¿Qué pasa con los datos si borramos el contenedor? Qué los perdemos. Esto puede ser un dolor en desarrollo, sobre todo si hemos metido ciertos juegos de prueba que no tenemos en ningún sitio.

¿Hay forma de guardar los datos fuera del contenedor de MongoDb? Sí, podemos usar los volúmenes de Mongo y decirle que ciertas carpetas las guarde fuera del contenedor, es decir en el disco duro del host.

Ver lección

3 Mongo Docker IV - Compose

Esto de levantar contenedores a golpe de línea de comandos está muy interesante... pero ¿No hay una forma más fácil de ejecutar todo ésto? Lo suyo sería poder crear un comando sencillo que permitiera a otros desarrolladores levantar o tirar ésto, sin conocer detalles.

Con docker compose podemos esconder toda esta configuración en un fichero yml.

Ver lección

¿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.