![](/img/trans.png)
[英]How to pass environment variable to docker container using `make` command?
[英]how to make a mongo docker container with auth
我無法通過遠程甚至docker exec -it container bash連接它。 我的腳本怎么了?
日志中似乎已經成功添加了用戶,但是為什么最后退出呢?
我的bash代碼一定有問題,那么這里有什么問題?
Docker版本1.13.1,內部版本092cba3
docker文件
FROM ubuntu:16.04
MAINTAINER TonyWang <plantpark.net@gmail.com>
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
RUN echo "deb http://repo.mongodb.org/apt/ubuntu $(cat /etc/lsb-release | grep DISTRIB_CODENAME | cut -d= -f2)/mongodb-org/3.2 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-3.2.list
RUN apt-get update && apt-get install -y mongodb-org
RUN mkdir -p /data/db
ADD set_mongodb_password.sh /set_mongodb_password.sh
EXPOSE 27017 28017
CMD ["/set_mongodb_password.sh"]
set_mongodb_password.sh
#!/bin/bash
set -m
/usr/bin/mongod
sleep 5
mongo admin --eval "help" >/dev/null 2>&1
mongodb_cmd="mongod --storageEngine wiredTiger"
cmd="$mongodb_cmd --httpinterface --rest --master"
cmd="$cmd --auth"
$cmd &
sleep 2
mongo admin --eval "db.createUser({user: 'rootUser', pwd: 'rootPass', roles:[{role:'root',db:'admin'}]});"
mongo admin -u rootUser -p rootPass << EOF
use admin
db.createUser({user: 'testuser', pwd: 'testpass', roles:[{role:'dbOwner',db:'Mongotest'}]})
EOF
docker日志容器
MongoDB shell version: 3.2.12
connecting to: admin
2017-03-19T13:52:52.591+0000 I NETWORK [initandlisten] connection accepted from 127.0.0.1:45052 #1 (1 connection now open)
2017-03-19T13:52:52.591+0000 I ACCESS [conn1] note: no users configured in admin.system.users, allowing localhost access
Successfully added user: {
"user" : "rootUser",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
2017-03-19T13:52:52.617+0000 I NETWORK [conn1] end connection 127.0.0.1:45052 (0 connections now open)
MongoDB shell version: 3.2.12
connecting to: admin
2017-03-19T13:52:52.650+0000 I NETWORK [initandlisten] connection accepted from 127.0.0.1:45054 #2 (1 connection now open)
2017-03-19T13:52:52.663+0000 I ACCESS [conn2] Successfully authenticated as principal rootUser on admin
switched to db admin
Successfully added user: {
"user" : "testuser",
"roles" : [
{
"role" : "dbOwner",
"db" : "Mongotest"
}
]
}
bye
2017-03-19T13:52:52.677+0000 I NETWORK [conn2] end connection 127.0.0.1:45054 (0 connections now open)
docker容器退出是因為它已完成運行您已告訴其運行的命令set_mongodb_password.sh
。
但是,我不建議您嘗試解決此問題。 我認為將種子例程內置到服務器容器中的設計是一個壞主意,而是建議將種子例程分開。 由於多種原因:
查看有關使用單獨容器進行mongo播種的問題和答案 ,並且還對docker機密進行一些研究,可能會很有用。
Setp.1 createUser.js保存到/ initMongo目錄
db = db.getSiblingDB('mydb');
db.createUser({
user: "myUser" ,
pwd: "sa123456",
roles: [
{ role:"dbOwner", db: "mydb" }
]
});
第二步docker-compose.yml
version: '2'
services:
mongodb:
container_name: mongodb
image: mongo:3.4
ports:
- 27017:27017
volumes:
- /initMongo:/docker-entrypoint-initdb.d/
environment:
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=admin123456
MongoURL
mongodb://myUser:sa123456@mongodb:27017/mydb
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.