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
文件。