具有客户端访问控制的Mongodb docker容器

具有客户端访问控制的Mongodb docker容器,mongodb,docker,Mongodb,Docker,我想创建一个docker容器,其中mongodb配置了客户端访问控制(用户身份验证,请参阅) 我已使用mongo成功配置docker容器。但它不使用mongo访问控制 问题是,要启用访问控制,我必须使用特定的命令行(--auth)运行mongodb,但只能在创建第一个管理员用户之后运行 对于标准mongodb安装,我通常执行以下步骤: 不使用运行mongod--auth 连接到mongo并添加管理员用户 使用--auth重新启动mongo 我该怎么对付docker?因为mongo映像总是在没

我想创建一个docker容器,其中mongodb配置了客户端访问控制(用户身份验证,请参阅)

我已使用mongo成功配置docker容器。但它不使用mongo访问控制

问题是,要启用访问控制,我必须使用特定的命令行(
--auth
)运行mongodb,但只能在创建第一个管理员用户之后运行

对于标准mongodb安装,我通常执行以下步骤:

  • 不使用
    运行mongod--auth
  • 连接到mongo并添加管理员用户
  • 使用
    --auth
    重新启动mongo
我该怎么对付docker?因为mongo映像总是在没有
--auth
的情况下启动。我应该创建一个新的图像吗?或者修改入口点


可能我遗漏了什么,我是docker的新手…

好的,我找到了解决办法。基本上,MongoDb有一个允许设置访问安全性(
--auth
)但允许本地主机连接的功能。 看

这是我最后的剧本:

# Create a container from the mongo image, 
#  run is as a daemon (-d), expose the port 27017 (-p),
#  set it to auto start (--restart)
#  and with mongo authentication (--auth)
# Image used is https://hub.docker.com/_/mongo/
docker pull mongo
docker run --name YOURCONTAINERNAME --restart=always -d -p 27017:27017 mongo mongod --auth

# Using the mongo "localhost exception" add a root user

# bash into the container
sudo docker exec -i -t YOURCONTAINERNAME bash

# connect to local mongo
mongo

# create the first admin user
use admin
db.createUser({user:"foouser",pwd:"foopwd",roles:[{role:"root",db:"admin"}]})

# exit the mongo shell
exit
# exit the container
exit

# now you can connect with the admin user (from any mongo client >=3 )
#  remember to use --authenticationDatabase "admin"
mongo -u "foouser" -p "foopwd" YOURHOSTIP --authenticationDatabase "admin"

如果您能够使用其他现有映像,则有一个维护良好的映像,它为MongoDB启用了默认身份验证,并且易于插入,名为

它还使用了可以在应用程序中使用的环境变量

我把它包括在我的
tutuum.yml
(或
docker compose.yml
)中,如下所示:

希望有帮助

mongo:
  image: 'tutum/mongodb:latest'
  environment:
    - MONGODB_PASS=<your-password-here>
  ports:
    - '27017:27017'
    - '28017:28017'
web:
  image: 'my-image'
  links:
    - 'mongo:mongo'
  ports:
    - '80:3000'
  restart: always