Installer MongoDB et Mongo Express avec Docker#
Pour démarrer avec MongoDB dans des conditions professionnelles et reproductibles, l'utilisation de la conteneurisation avec Docker et Docker Compose est la méthode recommandée par l'industrie.
Elle évite d'installer des services résidents encombrants sur votre machine hôte, isole entièrement les processus et permet de déployer simultanément le serveur de base de données MongoDB ainsi qu'une interface graphique Web d'administration (Mongo Express) en une seule ligne de commande.
1. Architecture de l'environnement de travail#
Notre environnement repose sur deux conteneurs interconnectés par un réseau virtuel Docker dédié :
flowchart LR
subgraph Hote ["Machine Hôte (Votre PC)"]
Nav[Navigateur Web : localhost:8081]
App[Applications Python / Shell : localhost:27017]
end
subgraph DockerBridge ["Réseau Virtuel Docker (analytics-network)"]
direction TB
ME["analytics-mongo-express-1<br/>(Interface Web GUI - Port 8081)"]
MDB["analytics-mongo-1<br/>(Moteur MongoDB - Port 27017)"]
Vol[("Volume Persistant<br/>mongo-dev-db-volume<br/>/data/db")]
ME -->|Connexion interne port 27017| MDB
MDB --- Vol
end
Nav -->|HTTP| ME
App -->|Protocole MongoDB| MDB
- Le conteneur MongoDB (
analytics-mongo-1) : Exécute le moteur de base de données standard. Ses données sont montées sur un volume Docker persistant afin que vos bases ne soient jamais perdues lors de l'arrêt du conteneur. - Le conteneur Mongo Express (
analytics-mongo-express-1) : Fournit une interface utilisateur Web légère et interactive permettant de créer, visualiser et éditer vos collections et documents BSON sans installer de logiciel lourd.
2. Le fichier docker-compose.yml#
Créez un dossier de travail dédié sur votre machine (par exemple mongodb-workspace), puis créez à l'intérieur un fichier nommé docker-compose.yml contenant la configuration ci-dessous :
version: '3.8'
services:
mongo:
container_name: analytics-mongo-1
image: mongo:7.0
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: Password123
ports:
- "27017:27017"
volumes:
- mongo-dev-db-volume:/data/db
networks:
- analytics-network
healthcheck:
test: ["CMD", "mongosh", "--quiet", "--eval", "db.adminCommand('ping')"]
interval: 10s
timeout: 5s
retries: 5
mongo-express:
container_name: analytics-mongo-express-1
image: mongo-express:latest
restart: always
ports:
- "8081:8081"
environment:
ME_CONFIG_MONGODB_ADMINUSERNAME: admin
ME_CONFIG_MONGODB_ADMINPASSWORD: Password123
ME_CONFIG_MONGODB_URL: mongodb://admin:Password123@mongo:27017/?authSource=admin
ME_CONFIG_BASICAUTH: "true"
ME_CONFIG_BASICAUTH_USERNAME: admin
ME_CONFIG_BASICAUTH_PASSWORD: Password123
networks:
- analytics-network
depends_on:
mongo:
condition: service_healthy
volumes:
mongo-dev-db-volume:
networks:
analytics-network:
driver: bridge
[!NOTE] Les identifiants définis par défaut sont : - Utilisateur racine (Root) :
admin- Mot de passe :Password123
Pour un environnement exposé en production, veillez à remplacer ces valeurs par des secrets robustes gérés via des variables d'environnement.
3. Démarrage et orchestration des conteneurs#
Ouvrez votre terminal dans le répertoire contenant votre fichier docker-compose.yml et lancez le démarrage en arrière-plan avec l'option -d (detached mode) :
Docker télécharge les images officielles si elles ne sont pas déjà présentes dans votre cache local, configure le réseau et initialise les conteneurs.
Vérifier l'état de fonctionnement#
Pour vous assurer que les deux services sont démarrés et en parfaite santé, exécutez :
Vous devez observer une sortie similaire à la suivante :
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
analytics-mongo-1 mongo:7.0 "docker-entrypoint.s…" mongo 30 seconds ago Up 30 seconds (healthy) 0.0.0.0:27017->27017/tcp
analytics-mongo-express-1 mongo-express:latest "/sbin/tini -- /dock…" mongo-express 15 seconds ago Up 15 seconds 0.0.0.0:8081->8081/tcp
La mention (healthy) sur le conteneur analytics-mongo-1 atteste que le test de santé interne (healthcheck) répond positivement et que le service écoute sur le port standard 27017.
4. Accès à l'interface d'administration Mongo Express#
Mongo Express met à votre disposition un panneau d'administration Web complet.
- Ouvrez votre navigateur web et accédez à l'adresse suivante :
👉 http://localhost:8081 - Une boîte de dialogue d'authentification HTTP s'affiche. Renseignez les identifiants configurés dans le fichier Compose :
- Nom d'utilisateur :
admin - Mot de passe :
Password123 - Vous accédez au tableau de bord principal. Vous y apercevez les trois bases de données système natives créées automatiquement par MongoDB :
admin: Stocke les rôles de sécurité, les utilisateurs et les autorisations système.config: Utilisée en environnement distribué pour gérer les métadonnées de partitionnement (sharding).local: Utilisée pour les opérations de réplication interne (oplog).
5. Connexion interactive en ligne de commande avec mongosh#
Pour interagir directement avec le moteur sans installer d'outil supplémentaire sur votre poste de travail, vous pouvez entrer directement à l'intérieur du conteneur Docker et exécuter le shell officiel mongosh :
L'invite de commande de MongoDB s'affiche :
Current Mongosh Log ID: 65f29d10e08b3941a39fbc10
Connecting to: mongodb://<credentials>@127.0.0.1:27017/?directConnection=true&authSource=admin
Using MongoDB: 7.0.x
Using Mongosh: 2.x.x
test>
Valider la santé du moteur#
Tapez la commande JavaScript suivante dans l'interpréteur pour vérifier que le moteur répond avec succès :
Sortie attendue :
Pour quitter le shell interactif et revenir à votre terminal hôte, tapez simplement :
6. Comprendre l'URI de connexion MongoDB#
Que vous vous connectiez depuis un script Python, une application Node.js ou un client graphique comme MongoDB Compass, vous utiliserez une chaîne de connexion standardisée (URI) :
Pour notre environnement local, la chaîne complète est :
[!IMPORTANT] Pourquoi
?authSource=adminest-il indispensable ?
Dans MongoDB, les utilisateurs sont attachés à une base de données d'authentification spécifique. Notre utilisateuradminayant été créé au niveau de la base systèmeadmin, ce paramètre indique formellement au pilote dans quelle base vérifier les droits d'accès avant d'autoriser les requêtes sur d'autres bases de données applicatives.
7. Gestion du cycle de vie des conteneurs#
Voici les commandes essentielles à connaître pour piloter votre cluster de développement au quotidien :
- Mettre en pause les conteneurs (sans perte de données) :
- Relancer les conteneurs existants :
- Arrêter et détruire les conteneurs (les données du volume restent intactes) :
- Réinitialisation totale (destruction des conteneurs ET purge des données du volume) :
Votre environnement MongoDB est désormais opérationnel et prêt pour l'exploration. Rendez-vous dans le chapitre suivant pour apprendre à manipuler et requêter vos premières données en NoSQL !
Commentaires