【问题标题】:Apache web server and microservices with Docker使用 Docker 的 Apache Web 服务器和微服务
【发布时间】:2019-10-22 17:59:47
【问题描述】:

我有一些在 Docker 上运行的 Spring Boot 微服务,以及用于所有静态内容的 Apache Web 服务器(也在 Docker 上运行)。微服务由 Web 浏览器使用。问题是,我不知道应该如何从 html 或 javascript 引用微服务:

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

谷歌搜索问题将我引向 Netflix eureka 或 Apache Camel,但我不确定这些是正确的解决方案。

【问题讨论】:

  • 这听起来像你正在尝试做Cross-Origin requests
  • 问题开始于决定让您的浏览器访问不同的微服务。典型的做法是把所有东西都放在一个东西后面(负载均衡器或反向代理)
  • 你可以把你的服务放在 Netflix Zuul 后面作为 API 网关,用户调用一个域取决于 parth zuul 直接重定向到 java 应用程序(如果你放置一个网络服务器,你也可以在没有网络服务器的情况下这样做在 zuul 之前)也许这可能会对你有所帮助:tutorialspoint.com/spring_boot/…

标签: apache docker microservices


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-06
    • 2018-07-29
    • 2016-10-16
    • 2021-09-23
    • 1970-01-01
    • 2018-09-27
    • 2018-09-11
    相关资源
    最近更新 更多