MongoDB es una de las bases de datos NoSQL más utilizadas para desarrollar aplicaciones modernas gracias a su modelo flexible basado en documentos. Cuando se combina con Docker Compose, es posible automatizar la creación del entorno de desarrollo y desplegar una base de datos lista para usar en pocos minutos.
En esta guía aprenderás cómo crear un contenedor de MongoDB y conectarlo con Mongo Express, una interfaz web que permite administrar colecciones, documentos y bases de datos desde el navegador. Además, conocerás cómo configurar credenciales, exponer puertos, persistir datos mediante volúmenes y establecer comunicación entre contenedores utilizando redes Docker.
Instalar MongoDB con Docker Compose
MongoDB puede ejecutarse fácilmente dentro de un contenedor Docker, evitando instalaciones manuales sobre el sistema operativo. Esta es una de las formas más utilizadas en entornos de desarrollo, pruebas e incluso producción.
Antes de comenzar debes tener instalado Docker y Docker Compose en tu equipo.
Verificar los prerrequisitos
Comprobar Docker
Comprueba que Docker está instalado correctamente:
docker --version
Comprueba que Docker Compose está disponible:
docker compose version
Si ambos comandos responden correctamente puedes continuar.
Enlaces de interés de Docker
Crear la estructura del proyecto
Crea una carpeta para alojar la configuración de MongoDB.
mkdir mongodb-docker
cd mongodb-docker
La estructura inicial será:
mongodb-docker/
└── docker-compose.yml
Crear el archivo docker-compose.yml
Crea el archivo docker-compose.yml:
touch docker-compose.yml
Añade el siguiente contenido:
version: '3.9'
services:
mongodb:
image: mongo:8
container_name: mongodb
restart: unless-stopped
ports:
- "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: admin123
volumes:
- mongodb_data:/data/db
networks:
- mongo-network
mongo-express:
image: mongo-express:latest
container_name: mongo-express
restart: unless-stopped
depends_on:
- mongodb
ports:
- "8081:8081"
environment:
ME_CONFIG_MONGODB_SERVER: mongodb
ME_CONFIG_MONGODB_PORT: 27017
ME_CONFIG_MONGODB_ADMINUSERNAME: admin
ME_CONFIG_MONGODB_ADMINPASSWORD: admin123
ME_CONFIG_BASICAUTH_USERNAME: admin
ME_CONFIG_BASICAUTH_PASSWORD: admin123
networks:
- mongo-network
networks:
mongo-network:
driver: bridge
volumes:
mongodb_data:
Explicación
- docker compose up
- Crea red
- Crea volumen
- Inicia Mongo
- Crea usuario admin
- Inicia Mongo Express
- Conecta ambos
- Accedes desde navegador
Levantar MongoDB
Inicia el contenedor:
docker compose up -d
Verifica que se encuentre ejecutándose:
docker ps
Deberías obtener una salida similar:
CONTAINER ID IMAGE STATUS
xxxxxxxxxxxx mongo:8 Up
Revisar los logs
Para comprobar que MongoDB inició correctamente:
docker logs mongodb
O visualizar los logs en tiempo real:
docker logs -f mongodb
Conectarse a MongoDB desde la terminal
Accede al contenedor:
docker exec -it mongodb bash
Respuesta:
root@798aa9eb9000:/#
Dentro del contenedor ejecuta:
mongosh -u admin -p admin123
Si la autenticación es correcta ingresarás a la consola de MongoDB.
Realizar las primeras pruebas
Mostrar las bases de datos existentes:
show dbs
Crear una nueva base de datos:
use blog
Crear una colección:
db.createCollection("articles")
Insertar un documento:
db.articles.insertOne({
title: "Mi primer artículo",
author: "Oscar",
createdAt: new Date()
})
Consultar documentos:
db.articles.find()
Cadena de conexión
Si deseas conectarte desde una aplicación Java, Node.js, Python o cualquier cliente MongoDB, puedes utilizar:
mongodb://admin:admin123@localhost:27017
Si deseas autenticar sobre la base de datos admin:
mongodb://admin:admin123@localhost:27017/?authSource=admin
Conectarse desde MongoDB Compass
MongoDB Compass es la interfaz gráfica oficial para administrar MongoDB.
Parámetros de conexión:
- Host: localhost
- Puerto: 27017
- Usuario: admin
- Contraseña: admin123
- Authentication Database: admin
Persistencia de datos
Uno de los conceptos más importantes es el volumen:
volumes:
- mongodb_data:/data/db
MongoDB almacena toda la información dentro de /data/db. Gracias al volumen, los datos permanecerán incluso si eliminas o recreas el contenedor.
Comandos de administración más utilizados
Detener MongoDB:
docker compose stop
Iniciar MongoDB:
docker compose start
Reiniciar MongoDB:
docker compose restart
Eliminar contenedores:
docker compose down
Eliminar contenedores y volúmenes:
docker compose down -v