Configurer MongoDB avec Traefik et docker
Ceci est un fichier de configuration Docker Compose qui définit un service nommé “mongo” basé sur l’image Docker officielle de MongoDB. Le service utilise l’environnement et les options de lancement suivants :
MONGO_INITDB_ROOT_USERNAME
etMONGO_INITDB_ROOT_PASSWORD
: ces variables d’environnement sont utilisées pour définir le nom d’utilisateur et le mot de passe de l’utilisateur root de la base de données MongoDB.ports
: cette option expose le port 27017 du conteneur sur le port 27017 de la machine hôte. Cela permet à d’autres services et applications de se connecter à la base de données MongoDB en utilisant le port 27017.command
: cette option spécifie la commande à exécuter lorsque le conteneur est démarré. Dans ce cas, la commandemongod
est exécutée avec les options--bind_ip_all
et--port 27017
, ce qui signifie que le serveur MongoDB écoutera sur toutes les interfaces réseau et utilisera le port 27017.volumes
: cette option monte le volume nommé “data” sur le répertoire/data/db
du conteneur. Cela permet de conserver les données de la base de données MongoDB sur le disque dur de la machine hôte, même si le conteneur est redémarré ou supprimé.labels
: ces étiquettes sont utilisées pour configurer l’intégration de ce service avec Traefik, qui est un reverse proxy Docker. Elles indiquent à Traefik comment acheminer les requêtes vers le service MongoDB et comment configurer la sécurité TLS (Transport Layer Security).networks
: cette option indique que le service MongoDB appartient au réseau nommé “web”, qui est défini en tant que réseau externe dans la section des réseaux de ce fichier de configuration. Cela signifie que le service MongoDB peut être accessible depuis d’autres conteneurs qui appartiennent au même réseau.
version: '3.8'
services:
mongo:
image: mongo
restart: always
container_name: mongo
environment:
- MONGO_INITDB_ROOT_USERNAME=mongo
- MONGO_INITDB_ROOT_PASSWORD=mongo
ports:
- 27017:27017
command: mongod --bind_ip_all --port 27017
volumes:
- data:/data/db:rw
labels:
- traefik.enable=true
- traefik.docker.network=web
- traefik.tcp.routers.mongo.entrypoints=https
- traefik.tcp.routers.mongo.rule=HostSNI(`My.Ip.com`)
- traefik.tcp.services.mongo.loadbalancer.server.port=27017
- traefik.tcp.routers.mongo.service=mongo
- traefik.tcp.routers.mongo.tls.certresolver=http
- traefik.http.routers.mongo.tls=true
- traefik.tcp.routers.mongo.tls.passthrough=true
networks:
- web
volumes:
data:
networks:
web:
external: true
En résumé, ce fichier de configuration Docker Compose définit un service MongoDB qui est exposé sur le port 27017 de la machine hôte et qui utilise un volume nommé “data” pour stocker les données de la base de données. Le service est configuré pour être accessible via Traefik et est associé au réseau externe nommé “web”. Si vous avez des questions sur la façon dont cette configuration fonctionne, n’hésitez pas à poser une nouvelle question.