Docker同网络部署时Spring Boot应用无法连接Redis副本节点排查求助
问题根因
你在Spring Boot容器的环境变量中配置的副本节点端口错误。Docker同网桥下的容器互相通信时,直接使用容器内部服务监听的端口即可,不需要使用宿主机映射的对外端口:
- redis-replica-a容器内部的Redis服务默认监听
6379端口 7001只是你映射到宿主机的端口,仅用于宿主机或外部网络访问,容器内网环境没有开放这个端口- 主节点可以正常连接,正是因为你配置的主节点端口
6379是容器内部的监听端口
修复方案
修改docker-compose.yml中redis-sample-app的环境变量即可:
把SPRING_REDIS_REPLICAS=redis-replica-a:7001替换为SPRING_REDIS_REPLICAS=redis-replica-a:6379
可选排查方向(修改配置后仍有问题可按以下步骤验证)
- 进入redis-sample-app容器,执行
nc -zv redis-replica-a 6379检查端口连通性,也可以执行redis-cli -h redis-replica-a -p 6379 ping验证Redis服务是否正常响应 - 进入redis-replica-a容器,执行
info replication确认主从同步状态正常,副本角色配置无误 - 查看Spring Boot启动日志,确认
Replica property和Replica nodes的打印值符合预期,没有被其他配置覆盖 - 确认三个服务都在docker-compose默认创建的同一个网桥下,没有自定义网络隔离规则
内容的提问来源于stack exchange,提问作者endryha
相关产品推荐
相关产品推荐

