mongodb - 将MongoDB与Docker结合使用时如何创建新的数据库和集合?

标签 mongodb docker docker-compose

我对Docker非常陌生,现在通过使用docker-compose初始化新的MongoDB容器来进行练习。
我了解到,将环境变量插入Dockerfile将为我创建一个admin用户并设置一个密码。我还发现,我可以向docker传递一个js文件,该文件将处理一些命令并为我创建要使用的结构。

我试图创建一个新的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集合中?

注意:我将必须创建一些数据库和集合,并不可能通过环境变量来启动它们。

谢谢你!

最佳答案

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

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

这些脚本将位于/ data / db文件夹中

关于mongodb - 将MongoDB与Docker结合使用时如何创建新的数据库和集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44473394/

相关文章:

php - 如何使用 PHP 7 的 MongoDB 驱动程序执行 drop()?

mongodb - 使用 MongoDB 聚合将不同属性的值合并到单个数组中

node.js - Mongo解析错误: Unescaped at-sign in authority section at parseConnectionString

docker - 防止 docker 在更改代码后从头开始构建镜像

docker - 如何将 Deployer 与 Docker (Laradock) 一起使用

javascript - 切换到 Mongoose ,我不应该使用请求客户端吗?

linux - 操作系统和内核是不同的东西吗?

Docker RUN 命令 : When To Group Commands, 什么时候不?

docker - Docker-compose:exec用户进程导致 “no such file or directory”但文件存在

javascript - 提供静态内容并设置Cookie