Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache web服务器和带Docker的微服务_Apache_Docker_Microservices - Fatal编程技术网

Apache web服务器和带Docker的微服务

Apache web服务器和带Docker的微服务,apache,docker,microservices,Apache,Docker,Microservices,我在Docker上运行了一些spring boot微服务,而ApacheWeb服务器(也在Docker上运行)用于所有静态内容。微服务由web浏览器使用。问题是,我不知道如何从html或javascript引用微服务: 微服务在不同的端口上运行 也可能在其他主机上运行 浏览器抱怨链接 用谷歌搜索这个问题让我想到了Netflix eureka或Apache Camel,但我不确定这些是正确的解决方案。让我们先考虑一下部署。您提到Docker容器可能在不同的机器上运行。我建议使用诸如或之类的容器

我在Docker上运行了一些spring boot微服务,而ApacheWeb服务器(也在Docker上运行)用于所有静态内容。微服务由web浏览器使用。问题是,我不知道如何从html或javascript引用微服务:

  • 微服务在不同的端口上运行
  • 也可能在其他主机上运行
  • 浏览器抱怨链接

用谷歌搜索这个问题让我想到了Netflix eureka或Apache Camel,但我不确定这些是正确的解决方案。

让我们先考虑一下部署。您提到Docker容器可能在不同的机器上运行。我建议使用诸如或之类的容器编排器来管理集群和微服务之间的通信(通常通过DNS)

通常,您希望将所有微服务隐藏在一个API路径后面。外部世界不需要知道您的服务器应用程序由多个微服务组成。您可以为此使用简单的反向代理。我个人喜欢,因为您可以通过标签在Docker生态系统中配置路由路径


你说你用浏览器消费微服务API,那么它是web客户端应用程序吗?如果是这样,我建议将其作为Docker容器,并使用相对路径将其嵌入到路由中。例如,UI用作
/
,微服务用作
/api/{service}/{path}
。然后UI应用程序可以使用相对路径,因为它们由相同的反向代理提供服务,并且在相同的URL下(=>无CORS问题)。此外,您可以部署到任何IP,路由保持不变,无需调整

这听起来像是您正在尝试的。问题开始于决定让您的浏览器访问不同的微服务。典型的做法是将所有东西都放在后面(负载平衡器或反向代理)。您可以将您的服务放在Netflix Zuul后面作为API网关,用户根据parth Zuul直接重定向到java应用程序调用域(如果您将Web服务器放在Zuul之前,您也可以在没有Web服务器的情况下执行此操作)也许这可以帮助你: