开发:Express和Mongo Docker容器网络

时间:2018-09-18 09:36:18

标签: mongodb docker docker-compose dockerfile devops

我一直在写this awesome Express&MongoDB应用,只是为了好玩,  1https://github.com/mwaz/oober-bck,一切都可以在脱机状态下完美地工作,对于不同的应用程序环境,我有不同的数据库配置,例如开发,登台,测试和生产,实际上在每种环境下,数据库都是不同的鉴于MongoDB具有灵活性,我们对此没有任何问题。

由于通过将$ NODE_ENV变量设置为本地计算机上所需的应用程序环境来使应用程序正常运行,因此在对应用程序进行Docker化时,一切都应正常工作,但是事实并非如此,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

1 个答案:

答案 0 :(得分:3)

您的暂存数据库的默认配置为define(),如config.js文件中所示。

在使用“ localhost”的docker环境中,将引用容器本身(在本例中为“ oober”容器。

您需要在config.js文件的STAGING部分中使用mongodb容器名称代替DATABASE: "mongodb://localhost:27017/staging_ooberdb"

请注意,您可能不想在生产环境中公开mongodb端口。