连接被Docker中的两个微服务拒绝了

问题描述 投票:0回答:1

我有两个微服务,我想要一个消耗另一个,但我得到这个错误:

servlet [dispatcherServlet]的Servlet.service()与path []的上下文引发了异常[请求处理失败;嵌套异常是org.springframework.web.client.ResourceAccessException:GET请求“http://localhost:8080/testMicroservicio”上的I / O错误:连接被拒绝(连接被拒绝);嵌套异常是java.net.ConnectException:连接被拒绝(连接被拒绝)]具有根本原因

java.net.ConnectException:连接被拒绝(连接被拒绝)

但是,如果我在浏览器中执行url,它可以正常工作,但如果微服务想要访问其他微服务,我就有这个错误。

有谁知道为什么?

我正在使用:RestTemplate

我把一些代码:

@RestController
public class MicroServiceController {


    private final AddressService service;

    private static final String URL_API_INFO = "http://localhost:8080/testMicroservicio";

    private RestTemplate restTemplate = new RestTemplate();

    private final static Logger log = Logger.getLogger("com.bernanetwork.web.controller.MicroServiceController");

    @Autowired
    public MicroServiceController(AddressService service) {
        this.service = service;
    }

    @RequestMapping(value = "/micro-service-test")
    public String consumidor() throws Exception {

        log.info("----------------------------------------------------------------------------------------");
        log.info("-------------------------Iniciando método consumidor------------------------------------");
        log.info("----------------------------------------------------------------------------------------");

        ResponseEntity <PruebasMicroservicio[]> response = restTemplate.getForObject(URL_API_INFO, PruebasMicroservicio[].class);

        Arrays.asList(response.getBody()).forEach(info -> log.info("---"+info));

        return "ok";
    }

这些微服务在Docker中运行

非常感谢。

java docker spring-boot microservices
1个回答
1
投票

问题是你正试图使用​​localhost从一个服务连接到另一个服务。这不起作用,因为每个容器都有自己的IP,localhost只会指向请求的调用者。

标准Docker连接容器的方法是将它们连接到Docker网络。

docker network create mynet
docker run --network mynet --name container-1 ...
docker run --network mynet --name container-2 ...

现在,container1可以使用http://container-2:8080与container2进行通信。

© www.soinside.com 2019 - 2024. All rights reserved.