从docker容器连接到本地mongodb [英] connecting to local mongodb from docker container

查看:488
本文介绍了从docker容器连接到本地mongodb的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个在mongodb://127.0.0.1:27017上运行的本地mongoDB服务器.我的数据库名称是 localv2 .我有一个带有Dockerfile的node/express应用,如下所示:

I have a local mongoDB server running on mongodb://127.0.0.1:27017. My DB name is localv2. I have a node/express app with the Dockerfile as follows:

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:

The server.js file has a connection to local mongodb with the following code:

app.db = mongoose.connect("mongodb://127.0.0.1:27017/localv2", options);

当我从使用上述Dockerfile创建的映像中启动一个容器时,此方法不起作用.我在某处读到Docker创建了一个具有自己的网关IP地址的VLAN.当我docker inspect我的容器时,我的网关IP地址:172.17.0.1.

This doesn't work when I spin up a container from the image created using the Dockerfile above. I read somewhere that Docker creates a VLAN with a gatway IP address of its own. When I docker inspect my container, my gateway IP address: 172.17.0.1.

即使将mongodb连接更改为

Even on changing the mongodb connection to

app.db = mongoose.connect("mongodb://172.17.0.1:27017/localv2", options)

重新构建图像并启动一个新容器,我仍然收到错误:

and re-building the image and starting a new container, I still get the error:

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

请帮助.

推荐答案

在Mac的Docker上,如果mongo在本地主机上运行,​​则可以使用host.docker.internal.您可以将代码读取到mongo主机的env变量中,然后像这样在Dockerfile中进行设置:

On Docker for Mac, you can use host.docker.internal if your mongo is running on your localhost. You could have your code read in an env variable for the mongo host and set it in the Dockerfile like so:

ENV MONGO_HOST "host.docker.internal"

有关更多详细信息,请参见此处 https://docs.docker.com/docker- for-mac/networking/#use-cases-and-aroundarounds

See here for more details on https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds

这篇关于从docker容器连接到本地mongodb的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆