链接Docker容器:Node.js + MongoDB

sam*_*teb 1 mongodb node.js docker dockerfile

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

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

这是我的Node应用程序的Dockerfile:

FROM nodesource/node:4.0

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

CMD ["node","server.js"]
Run Code Online (Sandbox Code Playgroud)

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

docker run --name myapp --link db:db_1 -p 80:3000 -d myapp
Run Code Online (Sandbox Code Playgroud)

这是我的两个容器:

容器ID图像命令
创建状态端口
名称216304df0905 myapp"node 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.在exportConnectWrap.afterConnect [ascomplete](net.js:1060:14)的exports._exceptionWithHostPort(util.js:860:20)处的_errnoException(util.js:837:11)

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

有人可以帮我处理吗?

小智 6

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