DEVOPS:Express和Mongo Docker Container Networking

问题描述 投票:0回答:1

我一直在写this awesome Express和MongoDB应用程序,只是为了好玩,1https://github.com/mwaz/oober-bck,一切都完美脱机,我有不同的数据库配置,适用于不同的应用程序环境,例如开发,升级,测试和生产,真正意义上的每一个环境,DB是不同的,并且鉴于MongoDB是灵活的,我们没有问题。

由于应用程序通过将$ NODE_ENV变量设置为本地计算机上所需的应用程序环境而正常工作,因此当应用程序已停靠时,一切都应该可以正常工作,但事实并非如此,mongoDB在某些时候崩溃并且没有连接到应用程序,这里是示例日志Docker Log, when running docker-compose up

Docker文件如下:

FROM node:7
WORKDIR /app
COPY package.json /app
RUN npm install
COPY . /app
CMD node app.js
EXPOSE 3003

docker-compose.yml文件

version: "2"
services:
  app:
    container_name: oober
    restart: always
    build: .
    ports:
      - "3003:3003"
    environment:
      - NODE_ENV=STAGING
    links:
      - mongo
  mongo:
    container_name: mongo
    image: mongo
    ports:
      - "27017:27017"

可以使用此链接在dockerhub上找到docker镜像

docker pull sparatan/oober_app
mongodb docker docker-compose dockerfile devops
1个回答
3
投票

登台数据库的默认配置是DATABASE: "mongodb://localhost:27017/staging_ooberdb",如config.js文件中所示。

在docker环境中,当你使用“localhost”时将引用容器本身(在这种情况下是你的“oober”容器)。

你需要在config.js文件的STAGING部分使用mongodb容器名称,就像这个DATABASE: "mongodb://mongo:27017/staging_ooberdb"一样。

另外,您可能不希望在生产环境中公开mongodb端口。

© www.soinside.com 2019 - 2024. All rights reserved.