如何将MongoDB添加到Docker容器中?

时间:2019-04-30 15:27:56

标签: node.js mongodb docker dockerfile

我有一个用NodeJS编写的应用程序,我想定期对其进行测试,最好在隔离的Docker容器中进行测试。

我一直在这里的教程中关注:Testing a Node.JS Application Within a Docker Container。它演示的内容之一是如何在Docker容器中运行测试,以及如何设置Dockerfile。例如:

declare global {
    interface Array<T> extends X.IConjable<T>, X.ISeqable<T> { }    
}

由于我的应用程序使用MongoDB,因此我需要一个正在运行的MongoDB实例来正确测试我的应用程序。我想将MongoDB包含在Docker容器中。

我找不到有关如何执行此操作的指令(或更一般地说,如何向容器添加任何数据库)。任何提示将不胜感激

1 个答案:

答案 0 :(得分:2)

我认为拥有多用途容器(即业务逻辑+ db)与docker并不是很像,所以这可能就是为什么您找不到任何相关内容的原因。在这种情况下,您应该做的就是使用多个容器,公开正确的端口,然后从应用程序中调用它。

我建议您研究Docker-Compose来实现这种基础结构,它可能有两种服务:一种用于节点服务器,另一种用于mongoDB。

与将所有服务都放在一个容器中相比,它甚至更易于维护和配置,因为您可以轻松拆分逻辑。

编辑:我没有测试以下docker-compose.yml,因此它可能需要一些修复,但是如果您同时阅读documentation,它将为您提供足够的帮助。

从这里开始,您可能会有一个docker-compose.yml文件,如下所示:

version: "3"
services:
  app:
    container_name: app
    restart: always
    build: ./path/to/your/dockerfile/root
    ports:
      - "3000:3000"
    links:
      - mongo
  mongo:
    container_name: mongo
    image: mongo
    volumes:
      - ./data:/data/db
    ports:
      - "27017:27017"

然后,在您的应用程序内部,您可以通过以下网址访问您的数据库:mongodb://mongo:27017/db