gpt4 book ai didi

node.js - Mongoose 服务器选择错误 ECONNREFUSED 与 docker-compose

转载 作者:行者123 更新时间:2023-12-02 18:18:21 26 4
gpt4 key购买 nike

我正在尝试创建一个最小的 dockerised Mongo Express React Node 堆栈。 Mongoose 在使用 node 时可以很好地连接到我的 dockerised mongo,但在 docker 内部尝试时失败。

返回.js:

const express = require('express');
const app = express();
const mongoose = require('mongoose');

mongoose.connect('mongodb://mongo:27017/test', {useNewUrlParser: true, useUnifiedTopology: true},
() => {console.log("connection established")})
.catch(error => handleError(error));
let db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {

// some stuff

});

app.listen(3000, function () {
console.log('Express-js listening on port 3000')
});
});

docker-compose.yml :
version: "3.7"

services:
mongodb:
image: mongo:latest
container_name: mongo
volumes:
- mongodb-data:/data/db
ports:
- 27017:27017

express-js:
build: ./back-express/ #local Dockerfile
ports:
- 3000:3000
depends_on:
- mongodb

volumes:
mongodb-data:

Dockerfile :
FROM node:lts
WORKDIR ./
COPY package.json yarn.lock ./
RUN yarn install --production
COPY . .
CMD ["node", "back.js"]

错误 :
express-js_1     | connection error: MongooseError [MongooseServerSelectionError]: connect ECONNREFUSED 127.0.0.1:27017
express-js_1 | at new MongooseServerSelectionError (/node_modules/mongoose/lib/error/serverSelection.js:22:11)

(...)

express-js_1 | message: 'connect ECONNREFUSED 127.0.0.1:27017',
express-js_1 | name: 'MongooseServerSelectionError',
express-js_1 | reason: TopologyDescription {
express-js_1 | type: 'Single',
express-js_1 | setName: null,
express-js_1 | maxSetVersion: null,
express-js_1 | maxElectionId: null,
express-js_1 | servers: Map { 'localhost:27017' => [ServerDescription] },
express-js_1 | stale: false,
express-js_1 | compatible: true,
express-js_1 | compatibilityError: null,
express-js_1 | logicalSessionTimeoutMinutes: null,
express-js_1 | heartbeatFrequencyMS: 10000,
express-js_1 | localThresholdMS: 15,
express-js_1 | commonWireVersion: null
express-js_1 | },
express-js_1 | [Symbol(mongoErrorContextSymbol)]: {}
express-js_1 | }

我试图在我的 Dockerfile 的最后一行之前添加这个: CMD ["sleep", "10"]但它没有效果。

我不知道出了什么问题。我花了很长时间在互联网上搜索。任何帮助都会让我开心。

完整代码可在此处访问: https://github.com/npasquie/back-express
在第一个中克隆这个项目: https://github.com/npasquie/back-express

最佳答案

我的一个 friend 找到了答案。代码有效,但我忘记用 docker-compose build 重建我的图像在启动容器之前。

很抱歉最初的问题不是很有用,但我仍然认为我不会删除它,因为它可能会帮助其他犯同样错误的初学者。

关于node.js - Mongoose 服务器选择错误 ECONNREFUSED 与 docker-compose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60806014/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com