Node / Express 应用程序无法连接到 docker mongodb
Node / Express app can't connect to docker mongodb
我想要 运行 一个使用 express 并连接到 (boot2docker) docker mongo 容器的节点应用程序。
当我第一次编写该应用程序时,我使用的是本地安装的 mongodb 实例,并且以下配置有效:
module.exports = {
env: 'development',
mongo: {
uri: 'mongodb://localhost/fullstack-dev'
}
};
它 运行 符合预期。
现在我正在尝试将其换成 mongo 的 docker 实例。
所以,我完成了以下步骤来获得 mongo 运行ning:
$ docker pull mongo:latest
$ docker run -v "$(pwd)":/data --name mongo -d mongo mongod --smallfiles
$ docker ps
#my mongo instance is 442c2541fe1a
$ docker exec -it 442c2541fe1a bash
$ mongo
此时,在我的命令提示符中似乎是 运行ning。
然后,我尝试获取 osx 上 运行s docker 的 boot2docker vm 的 IP:
$ boot2docker ip
# the IP returned: 192.168.59.103
所以,然后,我将 nodejs 配置中的旧 mongodb 路径换成以下内容:
module.exports = {
env: 'development',
mongo: {
uri: 'mongodb://192.168.59.103:27017/fullstack-dev'
}
};
当我 运行 应用程序时,出现连接错误。
events.js:72
throw er; // Unhandled 'error' event
^
Error: failed to connect to [192.168.59.103:27017]
将我的 MEAN 堆栈应用程序与 docker 化的 mongodb 实例连接的正确配置是什么?
您需要使用 -p
参数在容器上发布适当的端口,即:
docker run -p 27017:27017 -v "$(pwd)":/data --name mongo -d mongo mongod --smallfiles
这将使端口 27017 可在主机(您的情况下为 VM)上访问,并将流量转发到容器上的端口 27017。
我想要 运行 一个使用 express 并连接到 (boot2docker) docker mongo 容器的节点应用程序。
当我第一次编写该应用程序时,我使用的是本地安装的 mongodb 实例,并且以下配置有效:
module.exports = {
env: 'development',
mongo: {
uri: 'mongodb://localhost/fullstack-dev'
}
};
它 运行 符合预期。
现在我正在尝试将其换成 mongo 的 docker 实例。
所以,我完成了以下步骤来获得 mongo 运行ning:
$ docker pull mongo:latest
$ docker run -v "$(pwd)":/data --name mongo -d mongo mongod --smallfiles
$ docker ps
#my mongo instance is 442c2541fe1a
$ docker exec -it 442c2541fe1a bash
$ mongo
此时,在我的命令提示符中似乎是 运行ning。
然后,我尝试获取 osx 上 运行s docker 的 boot2docker vm 的 IP:
$ boot2docker ip
# the IP returned: 192.168.59.103
所以,然后,我将 nodejs 配置中的旧 mongodb 路径换成以下内容:
module.exports = {
env: 'development',
mongo: {
uri: 'mongodb://192.168.59.103:27017/fullstack-dev'
}
};
当我 运行 应用程序时,出现连接错误。
events.js:72
throw er; // Unhandled 'error' event
^
Error: failed to connect to [192.168.59.103:27017]
将我的 MEAN 堆栈应用程序与 docker 化的 mongodb 实例连接的正确配置是什么?
您需要使用 -p
参数在容器上发布适当的端口,即:
docker run -p 27017:27017 -v "$(pwd)":/data --name mongo -d mongo mongod --smallfiles
这将使端口 27017 可在主机(您的情况下为 VM)上访问,并将流量转发到容器上的端口 27017。