2017-03-19 15 views
2

何らかの理由で、このトピックの他のstackoverflow投稿を使用して動作させることができませんでした。 私は得ています: MongoError: failed to connect to server [localhost:27017] on first connectノードを使用してMongoErrorを取得するmongoコンテナに接続する

私は私のドッキングウィンドウコンテナを開始し、モンゴが働いていた場合にチェック:

$ docker run --name my-mongo -d mongo 
$ docker exec -it my-mongo bash 
# mongo 
MongoDB shell version v3.4.2 
connecting to: mongodb://127.0.0.1:27017 
MongoDB server version: 3.4.2 
Server has startup warnings: 
2017-03-19T01:23:53.047+0000 I STORAGE [initandlisten] 
2017-03-19T01:23:53.047+0000 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine 
2017-03-19T01:23:53.047+0000 I STORAGE [initandlisten] **   See http://dochub.mongodb.org/core/prodnotes-filesystem 
2017-03-19T01:23:53.290+0000 I CONTROL [initandlisten] 
2017-03-19T01:23:53.290+0000 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. 
2017-03-19T01:23:53.290+0000 I CONTROL [initandlisten] **   Read and write access to data and configuration is unrestricted. 
2017-03-19T01:23:53.290+0000 I CONTROL [initandlisten] 

> db.col.insert({"a":1}) 
> db.col.find() 
{ "_id" : ObjectId("58cde45479f772a8ea882ee1"), "a" : 1 } 

私は私のOSXのターミナル内のノードを開始し、接続しようとした後、終了しました:

$ node 
> var mongoose = require("mongoose"); 
> mongoose.connect("mongodb://localhost:27017"); 
mongoose {...} 
> MongoError: failed to connect to server [localhost:27017] on first connect ... 

私は他の多くのURLを試してみました:

mongoose.connect("mongodb://localhost:27017/test"); 
mongoose.connect("mongodb://localhost/test"); 
mongoose.connect("mongodb://127.0.0.1:27017"); 

docker上で実行されているmongodbコンテナに接続しようとしていますnodejを使用して接続しようとしています。どうすればこれを達成できますか?

+1

https://docs.docker.com/docker-for-mac/networking/#i-want-to-connect-to-a-container-from-the-mac –

答えて

2

コメントありがとうございました。

は、答えはあなたがコンテナへのあなたのできないルートへのトラフィックを意味MacOSの中docker0インターフェイスを見ることができない、https://docs.docker.com/docker-for-mac/networking/#known-limitations-use-cases-and-workarounds

基本的にここにあります。ただし、これはポート転送を使用して解決できます。

私は変更する必要がすべてではドッキングウィンドウrunコマンドです:

docker run -d -p 27017:27017 --name my-mongo mongo 

これは、このインスタンス内のドッキングウィンドウで、Linuxのポートを、公開、およびお使いのMac(-p)に転送することを意味します。 -dフラグは、プロセスをバックグラウンドで実行します。

mongoose.connect("mongodb://localhost:27017/test");が有効です。

+1

このコマンドは正しいです。あなたの解釈は間違っています。 '-p 27017:27017'フラグは、ポートマッピングと同じものです。 '-d'フラグは全く接続されていません。 '-d'とは、バックグラウンドモードでコンテナを実行することです(https://docs.docker.com/engine/reference/commandline/run/#usage)。つまり、進行中のプロセスです。 –

関連する問題