当前位置: 首页 > 知识库问答 >
问题:

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

穆高澹
2023-03-14

我有两个微服务,我希望其中一个使用另一个,但我犯了一个错误:

Servlet.service()对于servlet[调度员Servlet]在上下文中与路径[]抛出异常[请求处理失败;嵌套异常是org.springframework.web.client.ResourceAccessExcture: I/O错误GET请求的"http://localhost:8080/testMicroservicio":连接拒绝(连接拒绝);嵌套异常是java.net.ConnectExcture:连接拒绝(Connection拒绝)]与根本原因

JAVA网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中运行

非常感谢。

共有1个答案

杨飞语
2023-03-14

问题是您正试图使用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

 类似资料:
  • 我能够在库伯内特斯将两个节点聚集在一起。主节点似乎运行良好,但是在工作节点上运行任何命令都会导致错误:“拒绝与服务器localhost:8080连接——您指定了正确的主机或端口吗?” 来自大师(node1), 来自工作者(节点2), 我不知道如何解决这个问题。感谢您的帮助。 在执行时,"Journal alctl-xeu kubelet"我看到:"CNI未能检索网络命名空间路径:无法为终止的容器找

  • postgres-db 2021-02-23 22:46:3.410 UTC[1]日志:数据库系统已准备好接受连接 .环境: Docker-compose: 日志: app_1 22:46:31.020[error]GenServer#PID<0.368.0>终止app_1**(dbconnection.connectionerror)tcp连接(postgres-DB:5433):连接拒绝-:e

  • 我刚刚编写了一个sprint引导应用程序来连接rabbitmq,并尝试发送一些测试消息,但连接被拒绝。Rabbitmq安装在docker中,该docker由命令<code>拉动。docker拉动Rabbitmq:3-management, 我用命令<;code>;docker run-d--hostname rabbit_test--name rabbitmq-p 15672:15672-p 56

  • 我是库伯内特斯的初学者。我正在尝试安装迷你库贝,想在库伯内特斯中运行我的应用程序。我正在使用乌班图 16.04 我已遵循此处提供的安装说明https://kubernetes.io/docs/setup/learning-environment/minikube/#using-带有http代理的minikube 问题1:在安装了kubectl、virtualbox和minikube之后,我运行了命

  • 我对React和Node还不熟悉,尽管我的代码有几天没有出现错误,但今天我的终端出现了错误,我无法连接到我的mongo数据库。我使用节点服务器运行服务器。js命令,但我得到了错误。有人能帮我找到解决办法吗?谢谢 错误 服务器正在端口5000上运行(节点:3339)DeprecationWarning:当前的服务器发现和监控引擎已弃用,并将在未来的版本中删除。要使用新的服务器发现和监控引擎,请将选项

  • 寻找类似问题的堆栈溢出解决方案并没有解决我的问题,所以希望分享我目前的经历来帮助调试这个问题。 那么一个小小的序言;几天前,我最初安装了minikube/kubectl。今天我继续尝试学习minikube教程,现在遇到了一些问题。我在看迷你入门指南。 我在苹果电脑上。我的版本: $ kubectl版本 $minikube版本 $ vboxmanage --version 以下是我尝试检查响应的一系