【发布时间】:2017-06-11 05:48:59
【问题描述】:
我没有经常使用 docker 和 node,所以我希望这是一个简单的错误。我正在使用 docker compose。如果我通过浏览器访问,
http://localhost:27017/我得到一个:
您似乎正试图在本机上通过 HTTP 访问 MongoDB 驱动程序端口。
还有日志表明我的 mongodb 是健康的。我猜是我尝试通过浏览器访问时的最后一行。
2017-01-25T21:11:13.509+0000 I JOURNAL [initandlisten] 期刊 dir=/data/db/journal 2017-01-25T21:11:13.509+0000 I JOURNAL [initandlisten] 恢复:不存在日志文件,不需要恢复 2017-01-25T21:11:13.546+0000 I JOURNAL [耐久性] 耐久性线程 开始于 2017-01-25T21:11:13.547+0000 I JOURNAL [期刊作家] 日记作者线程开始于 2017-01-25T21:11:13.568+0000 I CONTROL [initandlisten] MongoDB 启动:pid=1 端口=27017 dbpath=/data/db 64 位主机=150c248f4cc7 2017-01-25T21:11:13.568+0000 I 控制 [initandlisten] 数据库版本 v3.0.2 2017-01-25T21:11:13.568+0000 我 控制 [initandlisten] git 版本: 6201872043ecbbc0a4cc169b5482dcf385fc464f 2017-01-25T21:11:13.569+0000 我控制 [initandlisten] OpenSSL 版本:OpenSSL 1.0.1e 2013 年 2 月 11 日 2017-01-25T21:11:13.569+0000 我控制 [initandlisten] 构建信息: 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 我控制 [initandlisten] 分配器:tcmalloc 2017-01-25T21:11:13.569+0000 I 控制 [initandlisten] 选项:{} 2017-01-25T21:11:13.573+0000 I NETWORK [initandlisten] 等待端口 27017 上的连接 2017-01-25T21:11:17.843+0000 I NETWORK [initandlisten] 连接 从 172.20.0.1:44148 #1 接受(现在打开 1 个连接) 2017-01-25T21:11:17.843+0000 I NETWORK [initandlisten] 连接 从 172.20.0.1:44146 #2 接受(现在打开 2 个连接) 2017-01-25T21:11:17.853+0000 I NETWORK [conn2] 结束连接 172.20.0.1:44146(现在打开 1 个连接)2017-01-25T21:11:17.998+0000 I NETWORK [conn1] 结束连接 172.20.0.1:44148(现在打开 0 个连接 打开)
所以看起来我的 mongodb 正在运行。当我在我的节点应用程序中尝试访问它时,我得到了。
{ MongoError: 首先连接到服务器 [localhost:27017] 失败 连接 在游泳池。 (/usr/src/app/node_modules/mongodb-core/lib/topologies/server.js:326:35) 在 emitOne (events.js:96:13) 在 Pool.emit (events.js:188:7) 在连接处。 (/usr/src/app/node_modules/mongodb-core/lib/connection/pool.js:270:12) 在 Object.onceWrapper (events.js:290:19) 在 emitTwo (events.js:106:13) 在 Connection.emit (events.js:191:7) 在套接字。 (/usr/src/app/node_modules/mongodb-core/lib/connection/connection.js:175:49) 在 Object.onceWrapper (events.js:290:19) 在 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
【问题讨论】:
标签: node.js mongodb docker docker-compose