mongodb - 开发:Express和Mongo Docker容器网络

标签 mongodb docker docker-compose dockerfile devops

我一直在写this awesome Express&MongoDB应用程序,只是为了好玩,
1:https://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

最佳答案

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

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

您需要改用mongodb容器名称,例如config.js文件的STAGING部分中的DATABASE: "mongodb://mongo:27017/staging_ooberdb"

附带说明一下,您可能不想在生产环境中公开mongodb端口。

关于mongodb - 开发:Express和Mongo Docker容器网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52383499/

相关文章:

docker - 为什么我无法访问 docker-compose 创建的服务?

mongodb - Mongoose/MongoDB - 附加到文档对象数组的简单示例,具有预定义的模式

python - pymongo 获取 E11000 重复键错误索引 pymongo 错误

mongodb - 从包含引用的字段获取数据

docker - Divio 应用程序或 CLI "doctor"报告 DNS 故障

带有 docker 的 mysql_config_editor

docker - 如何修复docker-compose版本不匹配的问题

linux - Mongodb升级问题

php - Lumen/Docker/MySQL (SQLSTATE[HY000] [2002] Connection refused) 但我可以外部连接

permissions - Docker卷,更改文件权限/所有者