繁体   English   中英

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

[英]How do I add MongoDB to a Docker container?

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

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

# This official base image contains node.js and npm
FROM node:7
ARG VERSION=1.0.0
# Copy the application files
WORKDIR /usr/src/app
COPY package.json app.js LICENSE /usr/src/app/
COPY lib /usr/src/app/lib/
LABEL license=MIT \
      version=$VERSION
# Set required environment variables
ENV NODE_ENV production
# Download the required packages for production
RUN npm update
# Make the application run when running the container
CMD ["node", "app.js"]

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

我找不到有关如何执行此操作的任何说明(或更笼统地说,如何向容器添加任何数据库)。 任何提示将非常感谢

我认为拥有多用途容器(即业务逻辑+数据库)并不是真正意义上的docker,所以这可能就是为什么您对此一无所获的原因。 在这种情况下,您应该做的就是使用多个容器,公开正确的端口,然后从应用程序中调用它。

我建议您考虑使用Docker-Compose做这样的基础架构,它可能有两种服务:一种用于节点服务器,另一种用于mongoDB。

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

编辑:我没有测试以下docker-compose.yml,所以它可能需要一些修复,但是如果您同时阅读文档 ,它应该对您有足够的帮助。

从这里开始,您可能会有一个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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM