Docker mongodbconfiguration文件

有一种方法可以将容器的/data/db目录链接到你的本地主机。 但是我找不到任何关于configuration的东西。 如何将/etc/mongo.conf链接到我的本地文件系统中的任何东西。 或者可能使用其他方法。 请分享你的经验。

当你使用这个运行docker容器时:

 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是主机的mongo文件夹。

/data/db是docker容器中的一个文件夹。

我正在使用mongodb 3.4官方docker图像。 由于mongod默认不读取configuration文件,所以我开始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 

删除-d将显示容器的初始化

使用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' 

出于某种原因,我应该使用MongoDb VERSION:3.0.1

现在:2016-09-13 17:42:06


那是我发现的:

 #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 "$@" 

我发现有两种方法来启动一个mongod服务。 我尝试的是:

  docker run --name mongo -d -v your/host/dir:/container/dir mongo:3.0.1 -f /container/dir/mongod.conf 
  • 最后一个-f是mongod参数,你也可以用--config代替。

  • 确保像your/host/dir这样的path存在,并在其中包含mongod.conf文件。