I am have not used both docker and node a lot so I hope its a simple mistake. I am using docker compose. If I through a browser access,
http://localhost:27017/
I get an:
It looks like you are trying to access MongoDB over HTTP on the native driver port.
Also logs suggest my mongodb is healty. Last line from when I tried to access through my browser I guess.
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)
So it looks that my mongodb is up running. When I in in my node application try to access it I get.
{ 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' }
My code trying to access the 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);
My docker-compose looks like this.
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"
Dockerfile for gh-api
FROM node:7.4-onbuild
EXPOSE 8888