mongodb - 通过 docker-compose 创建 MongoDB 数据库
问题描述
码头工人-compose.yml
mongo:
image: mongo:3.4.13-jessie
restart: always
ports:
- "27019:27017"
volumes:
- ./db1.js:/docker-entrypoint-initdb.d/db1.js:ro
- ./db2.js:/docker-entrypoint-initdb.d/db2.js:ro
db1.js
use testdba;
db.getCollection("users").insert({
"name": "A"
})
db2.js
use testdbb;
db.getCollection("users").insert({
"name": "B"
})
文件被复制到 mongo 容器中但没有执行我的理解是里面的 files(*.js)docker-entrypoint-initdb.d/
被执行了,但是通过上面的设置它不会
有谁知道我错过了什么?
在我发现的一些帖子中
environment:
MONGO_INITDB_ROOT_USERNAME: test
MONGO_INITDB_ROOT_PASSWORD: test
MONGO_INITDB_DATABASE: admin
在执行 .js 文件之前是否需要添加 root 用户?
解决方案
MongoDB 找到您的文件并尝试执行它们,但它失败了。您可以在日志中看到:docker-compose logs -f
并查找它尝试运行您的第一个 js 文件的行。
要修复它,请在 js 文件中使用以下语法:
db.testdba.getCollection("users").insert({
"name": "A"
});
编辑两个文件后,使用docker-compose up -d
. 再次检查日志,您将看到文件已成功执行。
推荐阅读
- excel - 在 Excel 名称管理器中添加名称时出错
- javascript - 如何将 onclick 事件添加到在 javascript 中创建的 img 元素
- tfs - 如何设置在 VSTS 上发布新 Wiki 版本的权限
- firebase - rxjs:如何从 Firestore 获取相关数据
- php - laravel-5 配置错误
- xslt - 当我的 XML 包含前缀时如何使用 XSLT?
- objective-c - UIWebView 访问照片库但有多个选择
- javascript - 在画布中绘制三角曲线
- node.js - 为什么sequelize在连接express session时返回500 [object SequelizeInstance:Users]?
- python-3.x - 在python中分组(分组依据)时删除小数