2017-06-10 38 views
0

我是Dockers的新手,现在正在使用docker-compose初始化新的MongoDB容器。 我知道将环境变量插入Dockerfile会为我创建一个管理员用户并设置一个密码。我还发现我可以通过docker一个js文件来处理一些命令并为我创建我想要使用的结构。如何在使用MongoDB和Docker时创建新的数据库和集合?

我试图创建新的JS文件,并写入到它的一些Mongo的指示,但面对这个错误,每次我跑了:

mongo-1 | 2017-06-10T12:28:08.153+0000 E QUERY [thread1] SyntaxError: missing ; before statement @/docker-entrypoint-initdb.d/mongo_setup.js:1:4

我的JS看起来像这样:

use admin; 
db.auth('admin', 'somepassword'); 
use newDB; 
db.createCollection('newCol'); 
newCol = db.getCollection('newCol'); 
newCol.insert({'hello':'world'}); 

什么我做错了吗?我在运行docker时如何设置“newDB”和“newCol”?我怎样才能自动添加一些索引到newCol集合中?

一张小纸条:我将不得不创造一些DB和集合,并通过环境变量初始化所有的人是不可能的..提前

谢谢!

+0

的'use'声明实际上并没有脚本命令,而是互动的。使用诸如'db.getSiblingDB('admin');'等同于'show collections'之类的语句。请参阅文档中的[脚本编写MongoDB](https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/) –

回答

0

要使用初始化,您可以使用脚本的数据库:

mongo test --eval "load(youscript.js)" 

的scritps将在/数据/ DB文件夹

相关问题