我在将开发环境中的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:
发展
运行/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之间的连接不起作用。
有人可以帮我解决这个问题吗?
答案 0 :(得分:6)
默认情况下,mongoose会尝试连接到本地mongodb。 为了能够使用您的mongodb容器,您应该在建立连接时使用其主机名(db_1)。
答案 1 :(得分:1)
是的,Sabmit,你是对的!
我只需要将这行代码更改为配置文件:
db:' mongodb:// localhost / test'
by,
db:' mongodb:// db_1:27017 / test'