यहां docker-compose
. का उपयोग करके एक और क्लीनर समाधान दिया गया है और एक js
स्क्रिप्ट।
यह उदाहरण मानता है कि दोनों फ़ाइलें (docker-compose.yml और mongo-init.js) एक ही फ़ोल्डर में हैं।
docker-compose.yml
version: '3.7'
services:
mongodb:
image: mongo:latest
container_name: mongodb
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: <admin-user>
MONGO_INITDB_ROOT_PASSWORD: <admin-password>
MONGO_INITDB_DATABASE: <database to create>
ports:
- 27017:27017
volumes:
- ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
mongo-init.js
db.createUser(
{
user: "<user for database which shall be created>",
pwd: "<password of user>",
roles: [
{
role: "readWrite",
db: "<database to create>"
}
]
}
);
फिर बस निम्नलिखित docker-compose कमांड चलाकर सेवा शुरू करें
docker-compose up --build -d mongodb
नोट :docker-entrypoint-init.d फ़ोल्डर में कोड केवल तभी निष्पादित होता है जब डेटाबेस को पहले कभी प्रारंभ नहीं किया गया हो।