从docker集装箱连接到当地的mongodb

我有一个在mongodb://127.0.0.1:27017上运行的本地mongoDB服务器。 我的数据库名称是localv2 。 我有一个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创build的映像中旋转容器时,这不起作用。 我在某处读到Docker使用自己的gatway IP地址创build了一个VLAN。 当我docker inspect我的容器时,我的网关IP地址:172.17.0.1。

甚至在更改mongodb连接

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

并重新build立图像,并启动一个新的容器,我仍然得到错误:

 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

请帮忙。

添加@ vlad-holubiev作为答案,因为它已经为我工作,并帮助用户find它。

在Docker运行中使用networking主机选项 ,如文档中所述:

在networking设置为主机容器将共享主机的networking堆栈和主机的所有接口将可用的容器。 容器的主机名将与主机系统上的主机名匹配。

 docker run -d -e ROOT_URL=http://localhost -e MONGO_URL=mongodb://localhost:27017 --network="host" 

docker集装箱与您的电脑是分开的,所以您无法连接到本地主机。 您应该在容器上运行mongo服务器,并使用映像名称进行连接。 MongoDB的://容器名:端口

Interesting Posts