如何在启动时在Docker容器中创建新的Mongodb?

问题描述:

真正简单Dockerfile:如何在启动时在Docker容器中创建新的Mongodb?

FROM mongo:3.2.10 

#create DB directory 
RUN mkdir -p /data/db 

EXPOSE 27017 

CMD ["mongod"] 

当我跑我想自动创建容器DB称为"CBDB"。我不想手动运行mongo shell,希望自动创建新的数据库。

谢谢!

+0

你继承了'mongo'图像,你不需要'数据的mkdir/DB再次暴露也将与父图像相同的端口。 – Marcs

您可以执行mongo作为守护进程并编写脚本以在入口点执行。

https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/

举一个简单的例子,用这个Dockerfile和入口点:

FROM mongo:3.2.10 

#create DB directory 
RUN mkdir -p /data/db 

EXPOSE 27017 

COPY entrypoint.sh /entrypoint.sh 
RUN chmod +x /entrypoint.sh 

ENTRYPOINT ["./entrypoint.sh"] 

在入口点,您可以使用蒙戈作为一个守护进程,并执行一个衬垫,以创建一个数据库,一个集合。请记住,使用尾(或类似的东西supervisord),以确保容器不被停止:

#!/bin/bash 
mongod --fork --logpath /var/log/mongo.log 
mongo --eval "db = db.getSiblingDB('new_db'); db.createCollection('new_collection');" 
tail -f /var/log/mongo.log 
+0

感谢您的回复!任何指针如何在mogod进程启动后执行mongo作为守护进程? – craigb85

+0

我在响应中添加了一个示例,您需要直接在守护进程模式下启动mongod进程。 –