我正在尝试在 Docker 中播种我的 MongoDB。
我的 docker-compose.yml 文件非常简单,这是我的
虽然音量:
...
volumes:
- ./mongo/init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro
- ./mongo/mongod.conf:/etc/mongod.conf:ro
- ./mongo/mongo-volume:/data/db
...
我将 init-mongo.js 映射为一个卷,这是它的内容:db.createUser({
user: 'root',
pwd: 'toor',
roles: [
{
role: 'readWrite',
db: 'testDB',
},
],
});
db.createCollection('users', { capped: false });
db.createCollection('test', { capped: false });
db.test.insert([
{ "item": 1 },
{ "item": 2 },
{ "item": 3 },
{ "item": 4 },
{ "item": 5 }
]);
用户 root
和数据库 testDB
以及集合 users
和 test
都没有问题地创建。问题是
db.test.insert([])
似乎都被遗漏了,并且没有文档被插入到 test
集合中。任何想法为什么会这样?
我绝对很乐意让这个工作,并且非常感谢这方面的任何帮助。
谢谢,
-凯文
最佳答案
将您的 init-mongo.js
文件更改为此以首先选择新数据库,然后创建集合,最后将数据播种到其中:
db.createUser({
user: 'root',
pwd: 'toor',
roles: [
{
role: 'readWrite',
db: 'testDB',
},
],
});
db = new Mongo().getDB("testDB");
db.createCollection('users', { capped: false });
db.createCollection('test', { capped: false });
db.test.insert([
{ "item": 1 },
{ "item": 2 },
{ "item": 3 },
{ "item": 4 },
{ "item": 5 }
]);
然后登录mongo
shell(使用mongo -u [admin_username] -p
)查看testDB
集合中的数据:use testDB;
db.getCollection('test').find()
这将显示:{ "_id" : ObjectId("5f947906cc845282e5711728"), "item" : 1 }
{ "_id" : ObjectId("5f947906cc845282e5711729"), "item" : 2 }
{ "_id" : ObjectId("5f947906cc845282e571172a"), "item" : 3 }
{ "_id" : ObjectId("5f947906cc845282e571172b"), "item" : 4 }
{ "_id" : ObjectId("5f947906cc845282e571172c"), "item" : 5 }
关于MongoDB Docker 初始化脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64507628/