繁体   English   中英

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

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

我正在尝试在运行容器中执行节点 js 应用程序,而 mongo db 容器正在运行并上线(docker run -d --name mongodb p 27017:27017 mongo)

这是与 ide 完美配合的节点 js 代码,并在容器上运行时抛出连接错误

无法连接到 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);
    }
  }
);

我运行服务器的命令docker run --name server -p 80:80 --rm server

节点js docker文件

FROM node

WORKDIR /app

COPY package.json .

RUN npm install

COPY . .

EXPOSE 80

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

我需要按照描述运行它,两个单独的容器暴露端口 80 用于服务器,另一个容器暴露端口 27017 用于 mongo。

多谢你们

我使用了错误的地址,而不是使用“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