springboot—springboot应用程序容器无法连接到redis容器

icnyk63a  于 2021-06-08  发布在  Redis
关注(0)|答案(1)|浏览(455)

我正在尝试运行一个spring引导应用程序,使用docker在本地运行redis。应用程序似乎无法与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;
    }

任何帮助都将不胜感激。谢谢

3ks5zfa0

3ks5zfa01#

将应用程序服务中的docker-compose.yml文件链接更改为- links: - "db" . 在两个服务之间建立链接时,不需要添加主机名。主机名将用于在代码中引用。您在applications.properties文件中正确地执行了这些操作。

相关问题