如何在启动时在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,希望自动创建新的数据库。
谢谢!
您可以执行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
感谢您的回复!任何指针如何在mogod进程启动后执行mongo作为守护进程? – craigb85
我在响应中添加了一个示例,您需要直接在守护进程模式下启动mongod进程。 –
你继承了'mongo'图像,你不需要'数据的mkdir/DB再次暴露也将与父图像相同的端口。 – Marcs