Java使用Jedis连接Docker Compose部署的Redis连接失败如何解决
问题原因
- 你的Docker Compose配置中Redis服务未对外暴露端口,宿主机上运行的Java程序无法通过本地网络访问到Docker容器内部的Redis实例
- 你提供的异常显示程序尝试连接
redis:6379,redis是Docker Compose内部网络的服务域名,只有同网络下的其他容器(比如你部署的Redis Commander)可以使用,宿主机程序无法直接解析该域名
解决步骤
- 修改docker-compose.yml配置,给Redis服务添加端口映射,修改后的完整配置如下:
version: '3' services: redis: container_name: redis hostname: redis image: redis # 新增端口映射配置 ports: - "6379:6379" redis-commander: container_name: redis-commander hostname: redis-commander image: rediscommander/redis-commander:latest restart: always environment: - REDIS_HOSTS=local:redis:6379 ports: - "8082:8081"
- 重启Docker Compose服务使配置生效,执行命令:
docker-compose down && docker-compose up -d
- 确认Java代码连接配置正确,使用
localhost作为连接地址,默认端口6379,你原本的代码逻辑无需修改:
Jedis jedis = new Jedis("localhost"); String pingResponse = jedis.ping(); System.out.println("ping should return pong" + pingResponse);
- 可以先在宿主机执行
redis-cli ping验证连通性,返回PONG即说明Redis服务可正常访问,再运行Java代码即可。
内容的提问来源于stack exchange,提问作者ss-ss-v1
相关产品推荐
相关产品推荐

