简体   繁体   English

在容器内运行节点 js 应用程序拒绝与 mongo db 建立连接

[英]Running node js app inside a container refuse to establish connection with mongo db

I am trying to execute node js app inside aa running container while mongo db container is running and up to air (docker run -d --name mongodb p 27017:27017 mongo)我正在尝试在运行容器中执行节点 js 应用程序,而 mongo db 容器正在运行并上线(docker run -d --name mongodb p 27017:27017 mongo)

This is the node js code which work perfectly with ide and throw connection error when running it on container这是与 ide 完美配合的节点 js 代码,并在容器上运行时抛出连接错误

FAILED TO CONNECT TO MONGODB MongooseServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017无法连接到 MONGODB MongooseServerSelectionError:连接 ECONNREFUSED 127.0.0.1:27017

mongoose.connect(
  // `mongodb://${process.env.MONGODB_USERNAME}:${process.env.MONGODB_PASSWORD}@mongodb:27017/course-goals?authSource=admin`,
// `mongodb://${process.env.MONGODB_USERNAME}:${process.env.MONGODB_PASSWORD}@${process.env.MONGO_DB_URL}:27017/course-goals?authSource=admin`,
`mongodb://localhost:27017/course-goals?authSource=admin`,
  {
    useNewUrlParser: true,
    useUnifiedTopology: true,
  },
  (err) => {
    if (err) {
     
      console.error(err);
    } else {
   
      app.listen(80);
    }
  }
);

I the command for the running the server docker run --name server -p 80:80 --rm server我运行服务器的命令docker run --name server -p 80:80 --rm server

node js docker file节点js docker文件

FROM node

WORKDIR /app

COPY package.json .

RUN npm install

COPY . .

EXPOSE 80

CMD [ "node", "app.js" ]

I need to running it just as described, two separately container exposed port 80 for server and the other 27017 for mongo.我需要按照描述运行它,两个单独的容器暴露端口 80 用于服务器,另一个容器暴露端口 27017 用于 mongo。

Thanks guys多谢你们

I've used wrong address, instead of using "localhost" we should use "host.docker.internal" when saying localhost its refer to docker network localhost, but when saying "host.docker.internal" its mean for the hosting machine localhost我使用了错误的地址,而不是使用“localhost”,我们应该使用“host.docker.internal”,当说 localhost 时它指的是 docker 网络 localhost,但是当说“host.Z05B6053C41A213B6053C41A21340AFD6inFC3B158”时,我们应该使用“host.docker.internal”

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM