gpt4 book ai didi

node.js - 无法连接到docker mongodb

转载 作者:IT老高 更新时间:2023-10-28 21:19:34 26 4
gpt4 key购买 nike

我没有经常使用 docker 和 node,所以我希望这是一个简单的错误。我正在使用 docker compose。如果我通过浏览器访问,http://localhost:27017/ 我得到一个:

It looks like you are trying to access MongoDB over HTTP on the native driver port.

还有日志表明我的 mongodb 是健康的。我猜是我尝试通过浏览器访问时的最后一行。

2017-01-25T21:11:13.509+0000 I JOURNAL [initandlisten] journal dir=/data/db/journal 2017-01-25T21:11:13.509+0000 I JOURNAL [initandlisten] recover : no journal files present, no recovery needed 2017-01-25T21:11:13.546+0000 I JOURNAL [durability] Durability thread started 2017-01-25T21:11:13.547+0000 I JOURNAL [journal writer] Journal writer thread started 2017-01-25T21:11:13.568+0000 I CONTROL [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=150c248f4cc7 2017-01-25T21:11:13.568+0000 I CONTROL [initandlisten] db version v3.0.2 2017-01-25T21:11:13.568+0000 I CONTROL [initandlisten] git version: 6201872043ecbbc0a4cc169b5482dcf385fc464f 2017-01-25T21:11:13.569+0000 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013 2017-01-25T21:11:13.569+0000 I CONTROL [initandlisten] build info: Linux ip-10-171-120-232 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1 x86_64 BOOST_LIB_VERSION=1_49 2017-01-25T21:11:13.569+0000 I CONTROL [initandlisten] allocator: tcmalloc 2017-01-25T21:11:13.569+0000 I CONTROL [initandlisten] options: {} 2017-01-25T21:11:13.573+0000 I NETWORK [initandlisten] waiting for connections on port 27017 2017-01-25T21:11:17.843+0000 I NETWORK [initandlisten] connection accepted from 172.20.0.1:44148 #1 (1 connection now open) 2017-01-25T21:11:17.843+0000 I NETWORK [initandlisten] connection accepted from 172.20.0.1:44146 #2 (2 connections now open) 2017-01-25T21:11:17.853+0000 I NETWORK [conn2] end connection 172.20.0.1:44146 (1 connection now open) 2017-01-25T21:11:17.998+0000 I NETWORK [conn1] end connection 172.20.0.1:44148 (0 connections now open)

所以看起来我的 mongodb 正在运行。当我在我的 Node 应用程序中尝试访问它时,我得到了。

{ MongoError: failed to connect to server [localhost:27017] on first connect at Pool. (/usr/src/app/node_modules/mongodb-core/lib/topologies/server.js:326:35) at emitOne (events.js:96:13) at Pool.emit (events.js:188:7) at Connection. (/usr/src/app/node_modules/mongodb-core/lib/connection/pool.js:270:12) at Object.onceWrapper (events.js:290:19) at emitTwo (events.js:106:13) at Connection.emit (events.js:191:7) at Socket. (/usr/src/app/node_modules/mongodb-core/lib/connection/connection.js:175:49) at Object.onceWrapper (events.js:290:19) at emitOne (events.js:96:13) name: 'MongoError', message: 'failed to connect to server [localhost:27017] on first connect' }

我的代码试图访问 mongodb

const express = require('express');
const gh = require('./src/fetch');
const MongoClient = require('mongodb').MongoClient;

const url = 'mongodb://localhost:27017/myApp';

// Constants
const PORT = 8888;

// App
const app = express();

app.get('/', function (req, res) {
MongoClient.connect(url, function (err, db) {
if (err) {
console.log(err);
} else {
console.log("Connected correctly to server");
db.close();
}

});
res.send('Hello world\n');
});

app.listen(PORT);
console.log('Running on http://localhost:' + PORT);

我的 docker-compose 看起来像这样。

version: '2'
services:
web:
image: gh-api
ports:
- "8888:8888"
environment:
- KEY=abc
restart: always
links:
- mongoDB
depends_on:
- mongoDB
mongoDB:
image: mongo:3.0.2
ports:
- "27017:27017"

用于 gh-api 的 Dockerfile

FROM node:7.4-onbuild

EXPOSE 8888

最佳答案

您能否将 url 更改为您的 mongodb:

const url = 'mongodb://localhost:27017/myApp';

const url = 'mongodb://mongoDB/myApp';

我遇到了与 my demo blog application 类似的问题并且随着该更改应用程序开始工作。

编辑

我能找到的最佳解释是explanation of docker-compose links .

Containers for the linked service will be reachable at a hostname identical to the alias, or the service name if no alias was specified.

因此,为了从 web 容器访问 mongoDB 容器,您应该使用 mongoDB 作为 web 中的主机名容器。

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

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