【问题标题】:How to fix connection refused error in Jedis in docker-compose?如何修复 docker-compose 中 Jedis 中的连接被拒绝错误?
【发布时间】:2019-11-29 18:47:30
【问题描述】:

我正在使用 redis 服务器和 java 应用程序设置 docker-compose,当 redis 在 docker-compose 中运行时,我的代码工作正常 在 HOST OS 中使用外部 java 程序。

但是当我将 java 程序放入容器中时,我得到了
java.net.ConnectException:连接被拒绝

Redis-cli 127.0.0.1:6379> 也可以正常工作


        try {
            Thread.sleep(3000);

            jedis = new Jedis("localhost");
            this.restTemplate = new RestTemplate(); 
            startWorking();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

当使用“redis”而不是“localhost”时,它会给我来自 docker-compose 外部的未知主机错误,并且 docker-compose 内部的连接被拒绝

这是我的 dockercompose.yml

 redis:
    image: redis
    ports:
    - "6379:6379"

  worker:
    build: worker

【问题讨论】:

  • 你是否在同一个 compose 中竞争 redis 和 java 应用程序?如果不是,它们可能没有连接到同一个网络,这就是为什么 redis 作为 redis 主机不起作用。
  • 是的,在同一个 compose 中...我如何在 docker-compose 和 java-app 中配置 redis 主机。

标签: java docker redis docker-compose jedis


【解决方案1】:

尝试明确指定网络并添加 depends_on 以确保当工作人员需要时 redis 已启动。

version: "3.7"
services:

  worker:
    build: worker
    networks:
      - net
    depends_on:
      - redis

  redis:
    image: redis
    ports:
      - "6379:6379"
    networks:
      - net

networks:
  net:

使用new Jedis("redis", 6379); 创建jedis 实例。

您可能想了解更多关于networking in composedependencies between services 的信息。

您也可以尝试在不使用 compose 的情况下运行示例,然后将其转换为 compose 配置。这里是 an example of network configuration 没有 docker compose。

【讨论】:

    猜你喜欢
    • 2020-03-06
    • 2021-11-28
    • 2021-10-12
    • 1970-01-01
    • 2021-09-23
    • 2020-04-20
    • 2016-03-08
    • 2017-08-05
    • 2020-09-08
    相关资源
    最近更新 更多