node.js - Docker为node、mongo分离容器,如何从node容器填充mongo

标签 node.js mongodb docker

我有两个 docker 容器,一个用于运行我的 Node 服务器,另一个用于运行 mongo。

我想做的是,当我安装 mongo 镜像时,我需要它使用 node.js 用我拥有的脚本填充 mongo。

使用 mongo 和 node.js 的单独容器来执行此操作的最佳方法是什么?

目前我的想法是,当我创建 mongo 容器时,我安装 Node 并作为 RUN 命令运行我的填充脚本。

有更好的方法吗?

最佳答案

如果您的 Node.js 应用程序中有一个批处理作业,您可以使用包含该应用程序的镜像启动另一个容器,只需将不同的可执行文件传递给 docker run命令。

这是一个例子。如果您有这两张图片:

  • yourcorp/node-app
  • yourcorp/mongo

启动您的 mongo 容器:docker run -d -P yourcorp/mongo

在容器中运行批处理作业,该容器将运行脚本然后退出。例如: docker run -e "MONGO_DB=host:port/database" yourcorp/node-app node tasks/seed-database.jstasks/seed-database.js只是您编写的与应用程序一起存在的脚本,但可以独立于服务器运行,仍然可以 require应用程序的其他部分,并在网络请求之外执行操作(为数据库播种)。

设置数据库后启动 Node.js 服务器: docker run -d -P -e "MONGO_DB=host:port/database" yourcorp/node-app supervisor app.js

按照您想要的方式设置公开的端口和环境变量取决于您。如果您提供更多详细信息,我们可以提供更好的示例。

关于node.js - Docker为node、mongo分离容器,如何从node容器填充mongo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33547564/

相关文章:

node.js - 标准_init_linux.go :190: exec user process caused "exec format error" The command '/bin/sh -c npm install' returned a non-zero code: 1

javascript - 如何使用nginx在express上自动访问https协议(protocol)

node.js - 错误 : Cannot find module './drivers' with mongoose only on the server

node.js - 如何使用 Mongoose 从 MongoDB 读取数据?

docker - 使用 docker 的 Elastic Enterprise Search 7.9.0

amazon-web-services - AWS上的Docker群-群服务无法访问互联网

python - 在服务器中对Gunicorn + Nginx + Django dockerized应用程序进行新更改

javascript - 'next' 中的 'middleware function' 参数在 Node.js 的 Express 中如何工作?

javascript - ES6 相当于 Node.js 需要函数调用

mongodb - 是否有像 mongoosastic 这样的插件可以与环回一起使用?