docker - Redis 哨兵 Docker 设置

标签 docker docker-compose redis-sentinel

基本上,我正在尝试设置一个 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/redisbitnami/redis-sentinel图片。 Docker Compose 文件是 here .
我的代码根据 Docker Compose 容器名称自动检测哨兵。

关于docker - Redis 哨兵 Docker 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35317629/

相关文章:

故障转移后 Redis master 回退

python - 哨兵自动发现master

docker - 是否可以创建一个使用另一个文件并修改其中一些设置的docker-compose.yml文件?

redis - 如何在 Redis 3.2.6 Sentinel 中禁用保护模式?

docker - 如何在 docker 中安装 nginx 1.14.X?

docker - 如果不删除docker中的网络会怎样?

docker - 你能有一个带有凭据的 Docker 注册表吗?

Docker - 无法准备上下文 : unable to evaluate symlinks in Dockerfile path: GetFileAttributesEx

docker-compose - 试图弄清楚为什么 eslint-watch 不能正确地与 docker-compose 一起使用

docker - 使用 docker stack 在 docker 容器中运行 MariaDB