Docker MongoDB配置文件

32

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

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

4个回答

35

我正在使用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/mongod.conf'
    volumes:
        - '/home/sa/data/mongod.conf:/etc/mongod.conf'
        - '/home/sa/data/db:/data/db'
    ports:
        - '37017:27017'

那么

docker-compose up

2
我相信在你的命令部分中应该写成 '/etc/mongod.conf'。 - Grant Carthew

21

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


是否可以使用“-v”标志映射文件? - ZuzEL
当我从正在运行的容器内部读取映射文件mongo.conf时,出现了权限错误。更改权限(chmod 777)没有帮助。 - Rugnar
2
你能分享 dockerfile 文件吗? - Thanh Nguyen Van
6
问题是 /etc/mongo.conf 现在在 Docker Hub 上不可用,但有一个 mongo.conf.orig 文件。 - Davut Gürbüz

3
我只是想知道通过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

2

由于某些原因,我需要使用版本为3.0.1的MongoDb。

现在时间是: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


-f gives the error unknown shorthand flag: 'f' in -f See 'docker start --help'. - Avindra Goolcharan
你使用了 docker run 吗?错误显示好像你确实使用了 docker start。@AvindraGoolcharan - Vi.Ci

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接