【问题标题】:Docker Mongodb: MongoNetworkError: connect ECONNREFUSED 192.168.96.2:27017Docker Mongodb:MongoNetworkError:连接 ECONNREFUSED 192.168.96.2:27017
【发布时间】:2019-02-14 13:09:16
【问题描述】:

当我在本地运行 docker-compose 时,我的应用程序运行良好。但是当我将它推送到我的网络服务器上时,我收到以下错误:

connection error : MongoNetworkError: failed to connect to server 
[mongo:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 
192.168.96.2:27017]

我不明白发生了什么。

这是我的 docker 文件:

FROM node:10

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install

COPY . . 

EXPOSE 3001

CMD ["node", "server"]

我的 docker-compose 文件:

version: '3'

services: 
  app:
    depends_on: 
      - mongo
    container_name: data-foot-api-container
    restart: always
    build: .
    ports: 
      - '80:3001'
  mongo: 
    image: mongo
    container_name: mongodb
    ports:
      - '27017:27017'
    volumes:
      - /data/db:/data/db
volumes:
  data-football:

如果有人知道它的来源,我将不胜感激

【问题讨论】:

  • 你能分享这个命令的输出docker ps 吗?
  • 顺便说一下,从 dockerfile CMD ["mongod", "service", "start"] 和 docker-compose 文件中的 link 部分删除无用的 CMD
  • 您的应用程序端口似乎已为应用程序反转。我假设您希望您的主机端口 3001 指向应用程序容器中的端口 80?应该是 3001:80。
  • @andolsi zied,感谢您的回复,结果如下:e022cee1e87f data-foot-api_app "node server" 47 seconds ago Up 1 seconds 0.0.0.0:80->3001/tcp data- foot-api-container f4f98357ef43 mongo "docker-entrypoint.s…" 48 秒前 Up 2 seconds 0.0.0.0:27017->27017/tcp mongodb
  • @pwaterz 我想在应用程序上线时访问端口 80,我在本地尝试过它并按预期工作:当我访问端口 80 时,它然后指向我的 nodejs 应用程序的端口 3001跨度>

标签: mongodb docker mongoose docker-compose


【解决方案1】:

感谢大家帮助我。

确实是因为 Node 容器在 mongo 容器之前已经准备好并且正在运行。 因此,Node 试图访问 mongo,但 mongo 尚未启动。

我找到了一种方法来强制 docker 在此处构建节点容器之前等待 mongo 准备好:https://dev.to/hugodias/wait-for-mongodb-to-start-on-docker-3h8b

可能还有其他方法可以做到,如果有人知道另一种方法或更好的方法,请发表评论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-18
    • 2021-04-15
    • 2023-04-09
    • 2018-03-13
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    相关资源
    最近更新 更多