j3d*_*j3d 4 mongodb docker docker-compose
下面是docker-compose.yml我用来 dockerize 我的 MongoDB 实例的代码:
version: '3.3'
services:
mongo:
image: 'mongo:latest'
ports:
- '27017:27017'
volumes:
- 'data-storage:/data/db'
networks:
mynet:
volumes:
data-storage:
networks:
mynet:
Run Code Online (Sandbox Code Playgroud)
容器已正确创建,并且启动时没有任何问题。是否可以在容器第一次启动时创建一个 Mongo 集合并用一些文档填充它?
例如,我想运行一些这样的语句:
db.strategyitems.insert( { symbol: "chf", eval_period: 15, buy_booster: 8.0, sell_booster: 5.0, buy_lot: 0.2, sell_lot: 0.2 } )
db.strategyitems.insert( { symbol: "eur", eval_period: 15, buy_booster: 8.0, sell_booster: 5.0, buy_lot: 0.2, sell_lot: 0.2 } )
db.strategyitems.insert( { symbol: "usd", eval_period: 15, buy_booster: 8.0, sell_booster: 5.0, buy_lot: 0.2, sell_lot: 0.2 } )
Run Code Online (Sandbox Code Playgroud)
...
根据MongoDB docker 文档,您可以使用此组合来初始化您的数据库:环境变量 MONGO_INITDB_DATABASE
此变量允许您指定用于在 /docker-entrypoint-initdb.d/*.js 中创建脚本的数据库的名称(请参阅下面的初始化新实例)。MongoDB 从根本上设计为“首次使用时创建”,因此如果您不使用 JavaScript 文件插入数据,则不会创建任何数据库。
和 /docker-entrypoint-initdb.d/ 中的 init .js 文件
初始化一个新实例
当容器第一次启动时,它将执行扩展名为 .sh 和 .js 的文件,这些文件位于 /docker-entrypoint-initdb.d 中。文件将按字母顺序执行。.js 文件将由 mongo 使用 MONGO_INITDB_DATABASE 变量指定的数据库(如果存在)执行,否则进行测试。您还可以在 .js 脚本中切换数据库。
请注意,您可以跳过设置环境变量,并在 js 文件中设置您的数据库。有关更多解释,请参阅文档。
希望能帮助到你。