【发布时间】:2015-11-06 01:12:09
【问题描述】:
我有两个 docker 容器,一个运行我的节点服务器,另一个运行 mongo。
我想要做的是,当我安装我的 mongo 映像时,我需要它使用 node.js 来使用我拥有的脚本填充 mongo。
使用 mongo 和 node.js 的单独容器来执行此操作的最佳方法是什么?
目前我的想法是,当我创建我的 mongo 容器时,我会安装节点并将我的填充脚本作为 RUN 命令运行。
有更好的方法吗?
【问题讨论】:
我有两个 docker 容器,一个运行我的节点服务器,另一个运行 mongo。
我想要做的是,当我安装我的 mongo 映像时,我需要它使用 node.js 来使用我拥有的脚本填充 mongo。
使用 mongo 和 node.js 的单独容器来执行此操作的最佳方法是什么?
目前我的想法是,当我创建我的 mongo 容器时,我会安装节点并将我的填充脚本作为 RUN 命令运行。
有更好的方法吗?
【问题讨论】:
如果您的 Node.js 应用程序中有一个批处理作业,您可以使用包含该应用程序的映像启动另一个容器,只需将不同的可执行文件传递给 docker run 命令。
这是一个例子。如果你有这两张图片:
yourcorp/node-appyourcorp/mongo启动你的 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 只是您编写的一个脚本,它与您的应用程序一起存在,但可以独立于服务器运行,它仍然可以require 应用程序的其他部分并在 Web 请求之外执行操作(种子数据库)。
在设置数据库后启动您的 node.js 服务器:
docker run -d -P -e "MONGO_DB=host:port/database" yourcorp/node-app supervisor app.js
获取公开的端口和环境变量是否设置您想要的方式取决于您。如果您提供更多详细信息,我们可以提供更好的示例。
【讨论】: