有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何修复dockercompose中绝地武士的连接拒绝错误?

我正在用redis服务器和java应用程序设置docker compose,当redis在docker compose中运行时,我的代码工作正常 在主机操作系统中使用外部java程序

但当我将java程序放入容器中时,我得到了
JAVA网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内部的连接被拒绝

这是我的备忘录。yml

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

  worker:
    build: worker

共 (1) 个答案

  1. # 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配置。这里是没有docker compose的an example of network configuration