यदि आप एक नज़र डालते हैं:
- https://github.com/docker-library/mongo/blob/master/4.2/Dockerfile
- https://github.com/docker-library/mongo/blob/master/4.2/docker-entrypoint.sh#L303-L313
आप देखेंगे कि docker-entrypoint.sh
. में दो चर का उपयोग किया जाता है :
- MONGO_INITDB_ROOT_USERNAME
- MONGO_INITDB_ROOT_PASSWORD
आप रूट उपयोगकर्ता को सेटअप करने के लिए उनका उपयोग कर सकते हैं। उदाहरण के लिए आप निम्नलिखित का उपयोग कर सकते हैं docker-compose.yml
फ़ाइल:
mongo-container:
image: mongo:3.4.2
environment:
# provide your credentials here
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=rootPassXXX
ports:
- "27017:27017"
volumes:
# if you wish to setup additional user accounts specific per DB or with different roles you can use following entry point
- "$PWD/mongo-entrypoint/:/docker-entrypoint-initdb.d/"
# no --auth is needed here as presence of username and password add this option automatically
command: mongod
अब कंटेनर को docker-compose up
. द्वारा प्रारंभ करते समय आपको निम्नलिखित प्रविष्टियों पर ध्यान देना चाहिए:
...
I CONTROL [initandlisten] options: { net: { bindIp: "127.0.0.1" }, processManagement: { fork: true }, security: { authorization: "enabled" }, systemLog: { destination: "file", path: "/proc/1/fd/1" } }
...
I ACCESS [conn1] note: no users configured in admin.system.users, allowing localhost access
...
Successfully added user: {
"user" : "root",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
रूट के अलावा कस्टम उपयोगकर्ताओं को जोड़ने के लिए एंट्रीपॉइंट एक्जीक्यूटेबल स्क्रिप्ट ($PWD/mongo-entrypoint dir के तहत रखा गया है क्योंकि इसे docker-compose
में माउंट किया गया है) प्रवेश बिंदु पर):
#!/usr/bin/env bash
echo "Creating mongo users..."
mongo admin --host localhost -u USER_PREVIOUSLY_DEFINED -p PASS_YOU_PREVIOUSLY_DEFINED --eval "db.createUser({user: 'ANOTHER_USER', pwd: 'PASS', roles: [{role: 'readWrite', db: 'xxx'}]}); db.createUser({user: 'admin', pwd: 'PASS', roles: [{role: 'userAdminAnyDatabase', db: 'admin'}]});"
echo "Mongo users created."
एंट्रीपॉइंट स्क्रिप्ट निष्पादित की जाएगी और अतिरिक्त उपयोगकर्ता बनाए जाएंगे।