基本上,我正在尝试设置一个 Redis-sentinel docker 实例,并希望从我的应用程序容器中进行调用。我正在运行的问题是 -
redis-sentinel 容器链接到应用程序容器。
因此,最初应用程序向哨兵进程询问有关 redis 主服务器的信息。然后哨兵说它是“127.0.0.1”。但是应用程序容器假定它是容器本地的。这可以通过在哨兵进程开始时传递的announce-ip/announce-port 参数来克服。然而,问题是这样的——
redis-sentinel 容器尝试在链接建立之前启动。因此,即使在哨兵进程启动网络接口(interface)期间,链接 IP 也不可用。
我能想到的一种解决方案是忙于等待网络接口(interface)建立。那么,问题就归结为“源容器如何发现其新建立的网络接口(interface)?是否有任何 docker 设置在源容器上以便它发现不同的链接?”
链接都在 docker-compose 文件中进行管理。
如果还有其他简单的解决方案,我也欢迎尝试。
最佳答案
不需要自定义哨兵图像,也不需要搞乱网络。见我的redis-ha-learning项目使用 Spring Data Redis , bitnami/redis和 bitnami/redis-sentinel图片。 Docker Compose 文件是 here .
我的代码根据 Docker Compose 容器名称自动检测哨兵。
关于docker - Redis 哨兵 Docker 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35317629/