我有一个运行在mongodb://127.0.0.1:27017上的本地mongoDB服务器。我的数据库名称为localv2。我有一个node/express应用程序,Dockerfile如下:
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
请帮忙。