【发布时间】:2020-12-23 03:10:33
【问题描述】:
我正在尝试使用 docker 在本地运行带有 redis 的 Spring Boot 应用程序。该应用似乎无法连接到 redis 容器。
我的 Dockerfile
FROM java:8
VOLUME /tmp
ADD target/test-*.jar test.jar
RUN bash -c 'touch /test.jar'
EXPOSE 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/test.jar"]
docker-compose.yml
version: '2'
services:
app:
build: .
ports:
- "8080:8080"
links:
- "db:redis"
db:
image: "redis:alpine"
hostname: redis
ports:
- "6379:6379"
应用程序属性
spring.redis.host=redis
当应用程序尝试连接到它抛出的数据库时
Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool] with root cause
app_1 |
app_1 | java.net.ConnectException: Connection refused (Connection refused)
我用来连接数据库的代码
@Bean
JedisConnectionFactory jedisConnectionFactory() {
return new JedisConnectionFactory();
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(jedisConnectionFactory());
return template;
}
任何帮助将不胜感激。谢谢
【问题讨论】:
-
这能回答你的问题吗? When to use --hostname in docker?
-
你可能想要的是一个alias for
db或者只是通过其服务名称db调用容器。 -
spring.redis.port 设置了吗?如何在代码中连接到 redis?
-
@Turing85 你的意思是使用链接:-“db”而不是链接:-“db:redis”?
标签: spring-boot docker redis