2015-05-02 101 views
5

我想運行使用express並連接到(boot2docker)docker mongo容器的節點應用程序。Node/Express應用程序無法連接到docker mongodb

當我第一次寫的應用程序,我使用的MongoDB的本地安裝的實例,下面的配置工作:

module.exports = { 
    env: 'development', 
    mongo: { 
    uri: 'mongodb://localhost/fullstack-dev' 
    } 
}; 

而且它跑預期。

現在我正在嘗試爲mongo的docker實例進行交換。

所以,我做了以下步驟獲得蒙戈運行:

$ docker pull mongo:latest 
$ docker run -v "$(pwd)":/data --name mongo -d mongo mongod --smallfiles 
$ docker ps 

#my mongo instance is 442c2541fe1a 
$ docker exec -it 442c2541fe1a bash 
$ mongo 

此時,出現在我的命令提示符下運行。

於是,我試圖讓boot2docker虛擬機上OSX運行泊塢窗IP:

$ boot2docker ip 
# the IP returned: 192.168.59.103 

所以,後來,我去了的NodeJS config來淘汰掉舊mongodb的路徑如下:

module.exports = { 
    env: 'development', 
    mongo: { 
    uri: 'mongodb://192.168.59.103:27017/fullstack-dev' 
    } 
}; 

當我運行該應用程序時,出現連接錯誤。

events.js:72 
     throw er; // Unhandled 'error' event 
      ^
Error: failed to connect to [192.168.59.103:27017] 

將我的MEAN棧應用程序連接到docker'ified mongodb實例的適當配置是什麼?

回答

7

您需要發佈相應的端口在容器上與-p說法,即:

docker run -p 27017:27017 -v "$(pwd)":/data --name mongo -d mongo mongod --smallfiles 

的將端口27017的主機(VM在您的案件)和流量轉發到端口27017上訪問集裝箱。

相關問題