Cod*_*ein 2 mongodb node.js docker dockerfile
我有一个用 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"]
Run Code Online (Sandbox Code Playgroud)
由于我的应用程序使用 MongoDB,因此我需要一个正在运行的 MongoDB 实例来正确测试我的应用程序。我想将 MongoDB 包含在 Docker 容器中。
我找不到任何有关如何执行此操作(或者更一般地说,如何将任何数据库添加到容器中)的说明。任何提示将非常感谢
小智 7
我认为拥有多用途容器(即业务逻辑+数据库)并不像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"
Run Code Online (Sandbox Code Playgroud)
然后,在您的应用程序中,您可以从这种 url 访问您的数据库:mongodb://mongo:27017/db
| 归档时间: |
|
| 查看次数: |
4885 次 |
| 最近记录: |