基本上,我正在尝试设置一个Redis-sentinel docker实例,并希望从我的应用程序容器中进行调用。我正在运行的问题是- redis-sentinel容器链接到应用程序容器。
因此,一开始,应用程序会询问有关redis master的前哨进程。然后,哨兵说它是"127.0.0.1“。但应用程序容器假定它是容器的本地。这可以通过在前哨进程开始时传递的宣告-ip/通告-端口参数来克服。但是,问题是-
redis-sentinel容器尝试在建立链接之前启动。因此,即使在前哨进程启动网络接口的时间内,链路IP也不可用。
我能想到的一种解决方案是忙碌地等待,直到网络接口建立。因此,问题可以归结为“源容器如何发现其新建立的网络接口?源容器上是否有什么docker设置用于发现不同的链接?”
链接都是在docker-compose文件中管理的。
如果有任何其他简单的解决方案,我也欢迎尝试。
发布于 2020-11-16 14:46:51
不需要自定义的前哨图像,也不需要打乱网络。使用Spring Data Redis、bitnami/redis和bitnami/redis-sentinel图像查看我的redis-ha-learning项目。Docker编写文件是here。我的代码根据Docker Compose容器名称自动检测标记。
发布于 2016-02-11 22:28:15
因此,对我有效的解决方案是简单地读取源容器上的/etc/hosts文件。我忙于等待,直到链路建立,然后使用该网络接口IP来启动前哨进程。这只是一个权宜之计,它是不可扩展的。正如本post中确认的那样,Redis-sentinel仍未准备好可停靠格式的生产。所以我决定在物理主机上安装Redis/sentinel。
https://stackoverflow.com/questions/35317629
复制相似问题