如何在Dockerized Mongo DB中初始化集合

时间:2018-08-02 21:41:09

标签: mongodb docker docker-compose

以下是我用来对MongoDB实例进行docker化的docker-compose.yml

version: '3.3'

services:
  mongo:
    image: 'mongo:latest'
    ports:
      - '27017:27017'
    volumes:
      - 'data-storage:/data/db'
    networks:
      mynet:

volumes:
  data-storage:

networks:
  mynet:

容器已正确创建,并且启动时没有任何问题。容器第一次启动时,是否可以创建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 } )

...

1 个答案:

答案 0 :(得分:1)

根据MongoDB docker documentation,您可以使用此组合来初始化数据库: 环境变量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文件中设置数据库。参见the doc for more explanations.

希望有帮助。