gpt4 book ai didi

node.js - Node 容器无法连接到mongo容器

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

我正在尝试对使用node实例的mongodb应用程序进行泊坞化。我正在尝试将其指向'mongodb://mongo:27018/eugenie_cp',但它会一直指向127.0.0.1:27017
我关注了这两个可能被标记为重复的问题,但是我已经从那里使用了答案:

Cannot connect to MongoDB via node.js in Docker

MongoDB on with Docker "failed to connect to server [localhost:27017] on first connect "

由于出现以下几行,导致出现错误,但无法解决。

// call express middleware
var express = require('express');
//Initialize the app.
var app = express();

//setting the mongoose options.
var options = {
useMongoClient: true,
server: {
socketOptions: {
socketTimeoutMS: 0,
connectTimeout: 0
}
},
server: {
reconnectTries: 1000
},
replset: {
socketOptions: {
socketTimeoutMS: 0,
connectTimeout: 0
}
}
};

// Mongo instance here.
var mongoose = require('mongoose');
// setting the MongoDb connection URL / string
var mongodb_connection_url = 'mongodb://mongo:27017/eugenie_cp';
// connect to our database
mongoose.connect(mongodb_connection_url, options);

// MongoDb connection error check
var db_check = mongoose.connection;
db_check.on('error', console.error.bind(console, 'MongoDB connection error:'));


我收到以下错误:
app      | MongoDB connection error: Error [MongoError]: failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017
app | at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1126:14) {
app | name: 'MongoError',
app | message: 'connect ECONNREFUSED 127.0.0.1:27017'
app | }]

我的 docker-compose.yml:
version: "3"
services:
app:
depends_on:
- mongo
container_name: app
restart: always
build: .
ports:
- "3002:3002"
links:
- mongo
mongo:
container_name: mongo
image: mongo:3.2
volumes:
- ./data:/data/db
ports:
- "27018:27017"

我该如何解决这个错误?

最佳答案

在docker链接或docker-compose网络中,您不应使用发布端口,在服务之间进行通信时,必须使用暴露端口或其他字容器端口,而不是主机端口。
因此,更新连接字符串。

var mongoose = require('mongoose');
var mongodb_connection_url = 'mongodb://mongo:27017/eugenie_cp';
mongoose.connect(mongodb_connection_url, options);
编辑:
主要问题是由于代码被缓存。我们使用一个简单的 .js程序进行了测试,以测试连接,该程序最终指向了正确的位置,并为我们提供了未刷新代码的想法。
我猜想,缓存无效是计算机的主要问题之一。
首先开始mongo
$ docker-compose up --build -d mongo
$ docker-compose up --build -d app
而且有效。

关于node.js - Node 容器无法连接到mongo容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58381521/

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