Il existe un moyen de lier le répertoire /data/db
du conteneur à votre hôte local. Mais je ne trouve rien sur la configuration. Comment lier /etc/mongo.conf
à quelque chose de mon système de fichiers local. Ou peut-être qu'une autre approche est utilisée. S'il vous plaît partager votre expérience.
Lorsque vous exécutez le conteneur Docker en utilisant ceci:
docker run -d -v /var/lib/mongo:/data/db -v /home/user/mongo.conf:/etc/mongo.conf -p port:port image_name
/var/lib/mongo
est le dossier mongo d'un hôte.
/data/db
est un dossier dans le conteneur Docker.
J'utilise l'image du docker officiel mongodb 3.4. Puisque le mongod ne lit pas un fichier de configuration par défaut, voici comment je lance le service mongod
docker run -d --name mongodb-test -p 37017:27017 \
-v /home/sa/data/mongod.conf:/etc/mongod.conf \
-v /home/sa/data/db:/data/db mongo --config /etc/mongod.conf
enlever -d vous montrera l'initialisation du conteneur
Utilisation d'un fichier docker-compose.yml:
version: '3'
services:
mongodb_server:
container_name: mongodb_server
image: mongo:3.4
env_file: './dev.env'
command:
- '--auth'
- '-f'
- '/etc/mongo.conf'
volumes:
- '/home/sa/data/mongod.conf:/etc/mongod.conf'
- '/home/sa/data/db:/data/db'
ports:
- '37017:27017'
Pour une raison quelconque, je devrais utiliser MongoDb avec VERSION: 3.0.1
Maintenant: 2016-09-13 17:42:06
C'est ce que j'ai trouvé:
#first step: run mongo 3.0.1 without conf
docker run --name testmongo -p 27017:27017 -d mongo:3.0.1
#sec step:
docker exec -it testmongo cat /entrypoint.sh
#!/bin/bash
set -e
if [ "${1:0:1}" = '-' ]; then
set -- mongod "$@"
fi
if [ "$1" = 'mongod' ]; then
chown -R mongodb /data/db
numa='numactl --interleave=all'
if $numa true &> /dev/null; then
set -- $numa "$@"
fi
exec gosu mongodb "$@"
fi
exec "$@"
Je trouve qu'il y a deux façons de démarrer un service de mongod ... Ce que j'essaie:
docker run --name mongo -d -v your/Host/dir:/container/dir mongo:3.0.1 -f /container/dir/mongod.conf
le dernier -f
est le paramètre mongod, vous pouvez également utiliser --config
à la place.
assurez-vous que le chemin semblable à your/Host/dir
existe et que le fichier mongod.conf
y figure.
Je voulais simplement connaître la commande utilisée pour spécifier une configuration pour Mongo via la commande docker run
.
Tout d'abord, vous voulez spécifier l'indicateur de volume avec -v
pour mapper un fichier ou un répertoire de l'hôte au conteneur. Donc, si vous aviez un fichier de configuration situé à /home/ubuntu/
et que vous vouliez le placer dans le dossier /etc/
du conteneur, vous le spécifieriez comme suit:
-v /home/ubuntu/mongod.conf:/etc/mongod.conf
Ensuite, spécifiez la commande pour que mongo lise le fichier de configuration après l’image de la manière suivante:
mongo -f /etc/mongod.conf
Si vous mettez tout cela ensemble, vous obtiendrez quelque chose comme ceci:
docker run -d --net="Host" --name mongo-Host -v /home/ubuntu/mongod.conf:/etc/mongod.conf mongo -f /etc/mongod.conf