如何访问在Vagrant虚拟机中运行的Redis

4
我们正在尝试使用Vagrant在Mac上(使用Ubuntu Guest OS)运行Redis服务器,需要使用这个Vagrantfile
不幸的是,我们无法访问Vagrant Box中的Redis数据库。
我们遇到了这个错误: Error: Redis connection to 127.0.0.1:6379 failed - read ECONNRESET 这是VirtualBox VM中的网络配置:

vagrant ports

我们需要在Vagrantfile中添加什么内容才能将Redis暴露给Mac呢?

(注意:使用Vagrant的原因是让人们无需在主操作系统上安装Redis即可尝试它,但更重要的是确保应用程序的其他元素按预期运行)


很奇怪他们使用127.0.0.1作为私有IP地址,我认为Vagrant会提示您一个警告消息,这并不是真正安全的 - 删除此行或替换为您选择的私有IP地址,应该可以工作。 - Frederic Henri
3个回答

2

这个链接可能会有所帮助: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的本地开发。


1
你可以为Vagrant box指定私有IP,然后使用该私有IP访问redis。
例如,假设您想将192.168.33.10配置为Vagrant box IP。只需在Vagrant文件中添加此行即可。
Vagrant.configure(2) do |config|
   config.vm.network 'private_network', ip: '192.168.33.10'
end

现在您可以使用192.168.33.10访问您的Vagrant虚拟机。


0

我碰巧在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会负责这个。


我知道这很老旧,但是我无法使用您的命令启动docker镜像(转到状态退出)。这是因为镜像现在已经更新并且端口自动绑定吗?您有dockerfile的副本吗? - AshwinKumarS
嗨@0v3rc10ck3d,抱歉耽擱了。由於該項目已經停止運行一段時間,我現在無法進行檢查。但是,您可能會發現dockerhub上的信息很有用:https://hub.docker.com/_/redis/ - jhohlfeld
谢谢@jhohlfeld,我找到了另外一种解决方法 :) - AshwinKumarS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接