尝试为mongose/express/mongodb应用程序运行docker时未处理的promise拒绝



我正在使用express、mongoose和mongodb创建一个应用程序。当我运行命令npm run start:dev时,它运行得很好,但我在对它进行码头化时遇到了问题。我正在运行docker build-t store:1.0.0和docker run-p 3000:3000 store:1.0.0

该应用程序开始在docker中运行,但当我检查poster以查看数据库中的所有项目时,我会收到未处理的promise拒绝警告。

我得到的错误是:(节点:43(未处理的PromiseRejection警告:MongooseServerSelectionError:connect ECONNREFUSED 127.0.0.1:27017

DockerFile: 
FROM node:14 
WORKDIR /store
COPY .npmrc package.json .
RUN npm install
COPY . . 
CMD ["npm","run","start:dev"]
JS:
const mongoose = require('mongoose')
mongoose.connect('mongodb://localhost:27017/storedb',{
useNewUrlParser: true, useUnifiedTopology:true, useCreateIndex:true
});

当您使用localhost:27017时,api在您的容器本地网络上查找,而使用您的本地ip 192.168.x.xx:27017您可以在Linux上使用ipconfig命令con windows或ifconfig命令来查看它。

发生这种情况是因为你的mongo服务器在你的电脑上是活动的,而不是在容器网络上。

最新更新