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