Image docker-compose mongodb mongo-express
Créer le fichier docker-compose.yml
# Créer un dossier :
$ mkdir docker-mongodb-mongoexpress && cd docker-mongodb-mongoexpress
# Créer le fichier docker-compose.yml :
$ touch docker-compose.yml
# Editer le fichier docker-compose.yml :
$ vim docker-compose.yml
# Ajouter le contenu suivant dans le fichier docker-compose.yml puis sauver et quitter l'éditeur de texte :
version: "3.7"
services:
db:
container_name: mongo-dev
image: mongo:5.0
environment:
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_DATABASE=auth
- MONGO_INITDB_ROOT_PASSWORD=pass
networks:
- mongo-compose-network
ports:
- '60017:27017'
volumes:
- ./data:/data/db
mongo-express:
container_name: mongo-express
image: mongo-express:0.54
depends_on:
- db
networks:
- mongo-compose-network
environment:
- ME_CONFIG_MONGODB_SERVER=mongo-dev
- ME_CONFIG_MONGODB_ADMINUSERNAME=admin
- ME_CONFIG_MONGODB_ADMINPASSWORD=pass
- ME_CONFIG_MONGODB_ENABLE_ADMIN=true
- ME_CONFIG_BASICAUTH_USERNAME=admin
- ME_CONFIG_BASICAUTH_PASSWORD=pass
ports:
- '6082:8081'
volumes:
- ./data:/data/db
networks:
mongo-compose-network:
driver: bridge
# Exécuter les containers :
$ docker compose up -d
Une fois vos containers démarrés, vous pouvez vous connecter à Mongo-Express à l’aide de votre navigateur Web à l’adresse http://localhost:6082
L’identifiant de connexion et le mot de passe sont ceux définis dans la section mongo-express. Dans notre cas c’est admin et le mot de passe est pass
Explications à propos de cet image docker-compose mongodb mongo-express :
- version: “3.7” -> détermine la version du fichier compose, plus d’infos sur Compose and Docker compatibility matrix.
- Section services :
- On définit 2 services -> db et mongo-express
- container_name -> est utilisé pour définir le nom d’un container. Dans notre exemple, ce sera mongo-dev et mongo-express
- restart: always -> Le container sera automatiquement redémarré quand le service Docker sera redémarré ou quand le container lui-même est redémarré.
- ports -> utilisé pour définir le mapping de port entre le container et la machine hôte. Par exemple pour mongo-express, le port 8081 du container sera joignable sur le port 6082 de la machine hôte.
- environment -> permet de définir des variables d’environnement pour un container donné.
- volumes -> est utilisé pour monter un dossier de la machine hôte sur le container.
Par exemple, pour le service db, on monte le volume ./data dans le dossier /data/db du container afin de stocker la base de données et persister les données lorsque le container est éteint.
TL;DR :
- Le paramètre -d dans “docker-compose up -d” permet de lancer en mode daemon (vous récupérez la main dans le terminal après avoir lancé les containers).
- Pour éteindre proprement, on utilise la commande : docker-compose down
- Lorsqu’on définit un port, c’est toujours dans l’ordre [port_hôte]:[port_container]
- L’utilisation des volumes Docker est recommandée pour persister des données. Ainsi, l’extinction de votre container ne sera pas synonyme de perte de vos données.
- Pour mongo-express, j’ai utilisé l’image en version 0.54 car je n’arrivais pas à obtenir les statistiques du serveur avec la version latest.