我有两个docker容器,一个用于运行我的节点服务器,另一个用于运行mongo。
我想要做的是当我安装我的mongo图像时,我需要使用node.js用我的脚本填充mongo。
使用mongo和node.js的单独容器执行此操作的最佳方法是什么?
目前我的想法是,当我创建我的mongo容器时,我安装节点并以RUN
命令运行我的填充脚本。
有更好的方法吗?
答案 0 :(得分:0)
如果您的批处理作业是Node.js应用程序的一部分,您可以使用具有该应用程序的图像启动另一个容器,只需将不同的可执行文件传递给{{1命令。
这是一个例子。如果您有这两张图片:
docker run
yourcorp/node-app
启动您的mongo容器:yourcorp/mongo
在将运行脚本的容器中运行批处理作业,然后退出。例如:
docker run -d -P yourcorp/mongo
。 docker run -e "MONGO_DB=host:port/database" yourcorp/node-app node tasks/seed-database.js
只是您编写的与您的应用程序一起运行的脚本,但可以独立于服务器运行,仍然可以tasks/seed-database.js
应用程序的其他部分并在Web外部执行操作(播放数据库)请求。
在设置数据库后启动node.js服务器:
require
以您希望的方式设置公开的端口和环境变量取决于您自己。如果您提供更多详细信息,我们可以提供更好的示例。