gpt4 book ai didi

spring-boot - 无法连接到位于不同系统中的redis,以及在docker容器中的不同系统上运行的spring boot服务器

转载 作者:行者123 更新时间:2023-12-02 19:15:50 25 4
gpt4 key购买 nike

获取异常 java.net.ConnectException:当我尝试连接到 Redis 服务器时连接被拒绝。

这是我提到要连接的redis属性

spring.redis.database=2
spring.redis.host=172.15.5.100

//这是我运行redis容器的系统IP地址

spring.redis.port=6380
`spring.redis.sentinel.master=redis

这是我的 docker-compose-yml 文件

services:
server:
container_name: server
build: .
ports:
- "8080:8080"
- "3000:3000"
depends_on:
- redis_presence_system

redis_presence_system:
container_name: redis
image: "redis:4.0.9"
hostname: redis
ports:
- "6380:6380"
expose:
- "6380"
volumes:
- ./redis-data:/data
restart: always``


Error message which i'm getting
java.net.ConnectException: Connection refused at redis.clients.jedis.Connection.connect(Connection.java:207) [jedis-2.9.0.jar:] at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:93) [jedis-2.9.0.jar:] at redis.clients.jedis.BinaryJedis.connect(BinaryJedis.java:1767) [jedis-2.9.0.jar:] at redis.clients.jedis.JedisFactory.makeObject(JedisFactory.java:106) [jedis-2.9.0.jar:] at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:888) [commons-pool2-2.4.3.jar:2.4.3] at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:432) [commons-pool2-2.4.3.jar:2.4.3] at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:361) [commons-pool2-2.4.3.jar:2.4.3] at redis.clients.util.Pool.getResource(Pool.java:49) [jedis-2.9.0.jar:] ... 27 more Caused by: java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) [rt.jar:1.7.0_80] at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) [rt.jar:1.7.0_80] at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) [rt.jar:1.7.0_80] at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) [rt.jar:1.7.0_80] at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) [rt.jar:1.7.0_80] at java.net.Socket.connect(Socket.java:579) [rt.jar:1.7.0_80] at redis.clients.jedis.Connection.connect(Connection.java:184)

最佳答案

ports: 中的第二个数字需要匹配容器内进程正在监听的端口。这通常是您正在运行的服务的“正常”端口;对于 Redis,端口 6379。所以更改

ports:
- "6380:6379"

(您不需要设置 container_name:hostname:expose: ;这些实际上不会设置与大多数应用程序相关的任何属性,并且所有这些属性都有合理的默认值。)

当您在两个容器之间连接时,您需要使用内部主机名(services: block 的名称)和进程本身正在监听的端口号来配置它。 ports:没有任何作用,实际上并不是容器之间连接所必需的。在您的应用程序中,您还需要设置

spring.redis.port=6379
spring.redis.sentinel.master=redis_presence_system

匹配标准 Redis 端口号以及 Compose YAML 文件中 Redis 服务 block 的名称。

关于spring-boot - 无法连接到位于不同系统中的redis,以及在docker容器中的不同系统上运行的spring boot服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58816898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com