链接Docker容器:Node.js + MongoDB

时间:2016-03-15 10:21:29

标签: node.js mongodb docker dockerfile

我在将开发环境中的2个容器与Docker链接时遇到问题。

我的mongo容器已经运行了调用db。

这是我的Node app的Dockerfile:

FROM nodesource/node:4.0

ADD package.json package.json  
RUN npm install  
ADD . .
ENV NODE_ENV development

CMD ["node","server.js"]

构建映像后,我使用以下命令在链接容器中运行它:

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

这是我的两个容器:

  

集装箱ID图像命令
  创建状态端口
  NAMES 216304df0905 myapp“node server.js”
  25分钟前退出(1)13分钟前
  myapp 506f9fcfd30b mongo“/entrypoint.sh mongo”
  19小时前上传19小时27017 / tcp db

myapp logs:

  

发展

     

服务器在http://localhost:3000

运行      

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

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

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:1)

是的,Sabmit,你是对的!

我只需要将这行代码更改为配置文件:

db:' mongodb:// localhost / test'

by,

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