不幸的是,我们无法访问Vagrant Box中的Redis数据库。
我们遇到了这个错误:
Error: Redis connection to 127.0.0.1:6379 failed - read ECONNRESET
这是VirtualBox VM中的网络配置:
我们需要在Vagrantfile中添加什么内容才能将Redis暴露给Mac呢?
(注意:使用Vagrant的原因是让人们无需在主操作系统上安装Redis即可尝试它,但更重要的是确保应用程序的其他元素按预期运行)
Error: Redis connection to 127.0.0.1:6379 failed - read ECONNRESET
这是VirtualBox VM中的网络配置:
我们需要在Vagrantfile中添加什么内容才能将Redis暴露给Mac呢?
(注意:使用Vagrant的原因是让人们无需在主操作系统上安装Redis即可尝试它,但更重要的是确保应用程序的其他元素按预期运行)
这个链接可能会有所帮助:https://serverfault.com/questions/248248/cannot-connect-to-redis-installed-on-virtualbox-running-ubuntu-from-windows-7。虽然该问题是关于从Windows连接Redis,但解决方案大多是在VM中修改Redis配置(redis.conf)以便将Redis绑定到非本地端口,这样可以在主机上(例如您的Mac)访问它。
此外,根据您尝试访问Redis的方式,您可能可以在主机机器(Mac)上配置SSH隧道,以便在Vagrant VM内部访问Redis服务器。我最终选择了这种方法,以连接到Vagrant VM中的Redis,以进行使用ember-cli和ember-cli deploy开发Ember JS应用程序并使用ember-cli-deploy-redis的本地开发。
Vagrant.configure(2) do |config|
config.vm.network 'private_network', ip: '192.168.33.10'
end
现在您可以使用192.168.33.10访问您的Vagrant虚拟机。
我碰巧在Vagrant设置中运行Redis容器。由于一再遇到这个问题,我想分享我的发现。
确保绑定到网络设备的IP地址是0.0.0.0而不是127.0.0.1是至关重要的。由于我正在运行Docker,我只需要确保容器正确运行即可:
docker run -d redis -p 0.0.0.0:6379:6379 redis
然后,除了已知的Vagrant配置:
config.vm.network :forwarded_port, guest: 6379, host: 6379
看这里:使用Docker在Vagrant虚拟机中运行Redis,并能够从Mac OSX主机系统访问。
这是不需要更改Redis配置的,因为Docker会负责这个。
127.0.0.1
作为私有IP地址,我认为Vagrant会提示您一个警告消息,这并不是真正安全的 - 删除此行或替换为您选择的私有IP地址,应该可以工作。 - Frederic Henri