web-dev-qa-db-fra.com

Fichier de configuration mockodb Docker

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.

12
ZuzEL

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.

12

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'
14
akeno

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.

2
Vi.Ci

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
1
Stunner