【发布时间】:2017-10-03 15:40:44
【问题描述】:
我有一个本地 mongoDB 服务器在 mongodb://127.0.0.1:27017 上运行。我的数据库名称是 localv2。我有一个带有 Dockerfile 的 node/express 应用程序,如下所示:
FROM node:7.5
RUN npm install -g pm2
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app
RUN npm install
COPY . /usr/src/app
EXPOSE 3002
ENV NODE_ENV local
CMD pm2 start --no-daemon server.js
server.js 文件通过以下代码连接到本地 mongodb:
app.db = mongoose.connect("mongodb://127.0.0.1:27017/localv2", options);
当我从使用上面的 Dockerfile 创建的映像启动容器时,这不起作用。我在某处读到 Docker 创建了一个具有自己网关 IP 地址的 VLAN。当我docker inspect我的容器时,我的网关IP地址:172.17.0.1。
即使将 mongodb 连接更改为
app.db = mongoose.connect("mongodb://172.17.0.1:27017/localv2", options)
并重新构建映像并启动一个新容器,我仍然收到错误:
MongoError: failed to connect to server [172.17.0.1:27017] on first connect [MongoError: connect ECONNREFUSED 172.17.0.1:27017]
运行容器的命令:docker run -p 3002:3002 image-name
请帮忙。
【问题讨论】:
-
你如何运行你的mongo?它也在docker中吗?
-
没有。它作为独立服务器运行。
-
尝试找出您的 PC 本地 IP 地址而不是容器地址并将其添加到 mongo 连接配置中
-
@VladHolubiev 成功了。谢谢!
标签: node.js mongodb docker mongoose dockerfile