[英]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.