Docker内Spring Boot API Gateway连接Redis失败问题求助
Docker内Spring Boot API Gateway连接Redis失败的解决方法
问题核心
容器内的127.0.0.1指向容器自身,而非宿主机或Redis容器。本地运行API Gateway能连接Docker Redis,是因为宿主机的端口映射将本地127.0.0.1:6379转发到了Redis容器,但容器内的127.0.0.1无法访问到其他容器。
具体解决步骤
使用Docker容器名称作为Redis地址
同一Docker网络下,Docker内置DNS可直接解析容器名称。修改Redis配置代码中的地址为容器名(假设Redis容器名为redis):@Configuration public class RedisConfig { @Bean public RedissonClient redissionClient() { Config config = new Config(); config.useSingleServer().setAddress("redis://redis:6379"); return Redisson.create(config); } }确认容器在同一网络
检查两个容器是否处于同一自定义网络:# 查看所有Docker网络 docker network ls # 检查容器所属网络 docker inspect <api-gateway容器名> | grep NetworkMode docker inspect <redis容器名> | grep NetworkMode若不在同一网络,将容器加入目标网络:
docker network connect <目标网络名> <容器名>清理无效hosts映射
宿主机etc/hosts中添加的127.0.0.1 api-gateway db redis对容器间通信无意义,反而可能造成解析混淆,建议删除该行配置。验证网络连通性
进入API Gateway容器,测试与Redis容器的连通性:# 测试ping连通性 docker exec -it <api-gateway容器名> ping redis # 测试Redis服务可用性 docker exec -it <api-gateway容器名> redis-cli -h redis ping若返回
PONG,说明Redis服务正常且网络连通。
内容的提问来源于stack exchange,提问作者houhou
相关产品推荐
相关产品推荐

