我想运行一个使用express的节点应用程序并连接到(boot2docker)docker mongo容器.
当我第一次编写应用程序时,我使用的是本地安装的mongodb实例,以下配置有效:
module.exports = {
env: 'development',
mongo: {
uri: 'mongodb://localhost/fullstack-dev'
}
};
Run Code Online (Sandbox Code Playgroud)
它按预期运行.
现在我正在尝试将其交换为mongo的docker实例.
所以,我已经完成了以下步骤来让mongo运行:
$ 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
Run Code Online (Sandbox Code Playgroud)
此时,似乎在我的命令提示符下运行.
然后,我试图获得在osx上运行docker的boot2docker vm的IP:
$ boot2docker ip
# the IP returned: 192.168.59.103
Run Code Online (Sandbox Code Playgroud)
那么,我就把nodejs config中的旧mongodb路径换成了以下内容:
module.exports = {
env: 'development',
mongo: {
uri: 'mongodb://192.168.59.103:27017/fullstack-dev'
}
};
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序时,我收到连接错误.
events.js:72
throw er; // Unhandled 'error' event
^
Error: failed to connect to [192.168.59.103:27017]
Run Code Online (Sandbox Code Playgroud)
将MEAN堆栈应用程序与docker'ified mongodb实例连接的正确配置是什么?
您需要使用-p参数在容器上发布适当的端口,即:
docker run -p 27017:27017 -v "$(pwd)":/data --name mongo -d mongo mongod --smallfiles
Run Code Online (Sandbox Code Playgroud)
将使端口27017可在主机(您的情况下为VM)上访问,并将流量转发到容器上的端口27017.
| 归档时间: |
|
| 查看次数: |
1848 次 |
| 最近记录: |