Docker mongodb配置文件

时间:2016-05-06 03:20:32

标签: mongodb docker

有一种方法可以将容器的/data/db目录链接到localhost。但我找不到任何有关配置的信息。如何将/etc/mongo.conf链接到本地​​文件系统中的任何内容。或者可能使用其他一些方法。请分享您的经验。

4 个答案:

答案 0 :(得分:17)

我正在使用mongodb 3.4官方docker镜像。由于默认情况下mongod没有读取配置文件,这就是我启动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'

答案 1 :(得分:14)

使用以下方法运行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容器中的文件夹。

答案 2 :(得分:2)

出于某种原因,我应该使用带有VERSION的MongoDb: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之类的路径存在且文件mongod.conf在其中。

答案 3 :(得分:1)

我只是想知道用于通过docker run命令为mongo指定配置的命令。

首先,您要指定带有-v的卷标志,以将文件或目录从主机映射到容器。因此,如果您的配置文件位于/home/ubuntu/并希望将其放在容器的/etc/文件夹中,则应使用以下内容指定它:

-v /home/ubuntu/mongod.conf:/etc/mongod.conf

然后为mongo指定命令,以便在图像之后读取配置文件:

mongo -f /etc/mongod.conf

如果你把它们放在一起,你会得到这样的东西:

docker run -d --net="host" --name mongo-host -v /home/ubuntu/mongod.conf:/etc/mongod.conf mongo -f /etc/mongod.conf