链接Docker容器:Node.js + MongoDB

我有一个在开发环境中连接2个容器与Docker的问题。

我已经有我的mongo容器运行调用数据库。

在这里,我的节点应用程序的Dockerfile:

FROM nodesource/node:4.0 ADD package.json package.json RUN npm install ADD . . ENV NODE_ENV development CMD ["node","server.js"] 

在build立图像后,我使用以下命令在链接容器中运行它:

 docker run --name myapp --link db:db_1 -p 80:3000 -d myapp 

在这里我的两个容器:

容器ID图像命令
创build状态端口
名称216304df0905 myapp“节点server.js”
25分钟前已完成(1)13分钟前
myapp 506f9fcfd30b mongo“/entrypoint.sh mongo”
19小时前上涨19个小时27017 / tcp db

myapp日志:

发展

服务器运行在http:// localhost:3000

/usr/src/app/node_modules/mongoose/node_modules/mongodb/lib/server.js:242 process.nextTick(function(){throw err;})^错误:在Object.exports处连接ECONNREFUSED 127.0.0.1:27017。在TCPConnectWrap.afterConnect [ascomplete](net.js:1060:14)处的exports._exceptionWithHostPort(util.js:860:20)处的_errnoException(util.js:837:11)

似乎我的应用程序和mongo之间的连接不起作用。

有人可以帮我处理呢?

默认情况下,mongoose会尝试连接到本地的mongodb。 为了能够使用你的mongodb容器,你应该在build立连接时使用它的主机名(db_1)。

是的Sabmit你是对的!

我只需要将这一行代码更改为我的configuration文件:

db:'mongodb:// localhost / test'

通过,

db:'mongodb:// db_1:27017 / test'