以下是我用来对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 } )
...
答案 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.
希望有帮助。