gpt4 book ai didi

node.js - 如何将 MongoDB 添加到 Docker 容器?

转载 作者:太空宇宙 更新时间:2023-11-03 22:49:11 25 4
gpt4 key购买 nike

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

我一直在关注这里的教程:Testing a Node.JS Application Within a Docker Container 。它演示的内容之一是如何在 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 实例来正确测试我的应用程序。我想将 MongoDB 包含在 Docker 容器中。

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

最佳答案

我认为拥有多用途容器(即业务逻辑+数据库)并不像docker那样,所以这可能是为什么你找不到任何关于这个的东西。在这种情况下,您应该做的是使用多个容器,公开正确的端口,然后从您的应用程序中调用它。

我建议您研究 Docker-Compose 来实现这样的基础设施,它可能有两种服务:一种用于您的 Node 服务器,另一种用于您的 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

关于node.js - 如何将 MongoDB 添加到 Docker 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55924232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com