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

利用Docker主机名实现两个微服务之间的通信

郑承恩
2023-03-14

它现在是如何工作的:

微服务X用静态ip向微服务Y发出REST API请求

http://{ip-address}:{port}/doSomething
http://hostname:{port}/doSomething

我试图通过在docker-compose中创建一个已使用的定义网络来实现这一点:

    #part of docker-compose file
    streamapp:
      hostname: twitterstreamapp
      image: twitterstreamapp
      container_name: twitterstreamapp
      restart: always
      ports:
        - '8090:8080'
      build:
        context: ./TwitterStream
        dockerfile: Dockerfile

    storeapp:
      hostname: twitterstoreapp
      image: twitterstoreapp
      container_name: twitterstoreapp
      restart: always
      ports:
        - '8095:8080'
      build:
        context: ./TwitterStore
        dockerfile: Dockerfile
      depends_on:
        - 'mysql-db'
      networks:
        - backend

  volumes:
    MyDataVolume:

  networks:
    backend:
      driver: bridge

例如,我可以从容器X ping到容器Y,但不能Curl。我该如何解决这个问题,或者这不是实现我想要的最好的方法。

共有1个答案

司空海荣
2023-03-14

解决方案非常简单,可以使用服务的名称,而不是使用IP或主机名。

在您的示例中,在StreamApp服务中,您可以使用http://storeApp:8080访问另一个服务。

类似地,在storeapp服务中,您可以通过http://streamapp:8080访问另一个服务。

请不要说您必须使用内部端口,而不是导出端口。

当您从其他机器(即Internet)访问服务时,这并不适用。在这种情况下,必须使用http://{IP_OF_THE_MACHINE}:8090格式

 类似资料:
  • 本文向大家介绍C#利用服务器实现客户端之间通信,包括了C#利用服务器实现客户端之间通信的使用技巧和注意事项,需要的朋友参考一下 先来讲述下我自己对于整个Socket通信过程的理解,毕竟初学,说错见谅,知道错了会改正~  首先在服务端新建一个serverSocket,对其进行初始化(一般包含AddressFamily:IP地址类型,SocketType:Socket传输数据方式,ProtoType:

  • 我是一个新的微服务,我正在读一些关于discovery server的例子,我看到我们可以通过使用url调用另一个微服务api:。“inventor-service”是我在Discovery中注册的服务实例。所以我的问题是使用调用目录host:port:http://localhost:9009/api/inventory/{productCode}的serviceId intead有什么好处。

  • Docker允许来自多个容器的服务器通过链接和服务发现相互连接。然而,据我所知,这个服务发现是主机本地的。我想实现一个使用其他托管在不同机器上的服务的服务。 在Docker中有几种方法可以解决这个问题,比如CoreOS的< code>jumpers,本质上代理其他机器的主机本地服务,以及一大堆用于管理Docker部署的github项目,这些项目似乎都试图支持这个用例。 鉴于发展速度,很难遵循当前的

  • 大家好,我是微服务的架构新手,所以我有一个miscroservice,每个实体都链接到“用户”实体,但问题是“用户”实体在另一个微服务中,有什么解决方案吗? 如果我在同一个微服务中没有两个实体,我不知道在哪里使用@onetomany关系) 我无法将两个微服务组合在一起。 领域模型层呢?使用另一个微服务的数据是不是最好的解决方案? 提前感谢。

  • 我正在构建一个基于Spring云的微服务ML管道。我有一个数据摄取服务,它(当前)从SQL接收数据,这些数据需要被预测服务使用。 普遍的共识是写入应该使用kafka/Rabbitmq使用基于异步消息的通信。 我不确定的是如何编排这些服务? 我是否应该使用API网关来调用启动管道的摄取?