【问题标题】:How to access different endpoints between two express servers running on different containers如何访问在不同容器上运行的两个快速服务器之间的不同端点
【发布时间】:2020-02-26 21:25:34
【问题描述】:

如何向在与另一个容器不同的容器上运行的另一个服务器发出请求?它们都在同一个网络上,我使用 docker-compose 来操作它们。

我可以轻松访问身份验证端点,因为它是在此服务器中定义的,如下所示。

// Use login routes
app.use('/api/auth', routes.auth);

如何访问在不同服务器(不同容器)中定义的端点?我尝试使用http-proxy 如下,但我的代码中断了。

app.use('/api/tasks', proxy({ target: 'http://localhost:5004/api/tasks'}));

简而言之,我想通过用户管理服务器访问任务服务器路由。

请多多指教。

【问题讨论】:

    标签: node.js docker express routes microservices


    【解决方案1】:

    我假设您将 docker 用于容器。您可以简单地创建一个 docker 网络,然后将容器附加到它。这将允许您使用其名称调用容器,例如 http://fooAuth:1339,但您需要一个 api 调用。

    您还可以使用Envoy/Istio 服务网格(但如果您是初学者,这很难实现和配置)来确定路径并将您的请求定向到负责的应用程序。

    【讨论】:

    • 你的意思是像 app.use('/api/tasks', proxy({ target: 'fooAuth:1339/api/tasks'}));
    • 我的意思是你还需要像var {createProxyMiddleware} = require('http-proxy-middleware');var proxy = require('http-proxy-middleware').createProxyMiddleware;这样的包
    【解决方案2】:

    使用docker-compose 文件启动两个容器。有说明和教程链接here

    【讨论】:

      【解决方案3】:

      假设您使用相同的 docker-compose 配置文件运行两个容器,其中每个容器都定义为服务,您将能够使用服务名称作为 JavaScript 代码中容器的主机名。

      给定以下docker-compose.yml,例如:

      services:
        usermanagement_server:
          build: ./usermanagement_server
        tasks_server:
          build: ./tasks_server 
      

      以上配置将允许您执行以下操作:

      app.use('/api/tasks', proxy({ target: 'http://tasks_server/api/tasks'}));
      

      来自docker-compose documentation

      ...默认情况下,任何服务都可以使用该服务的名称访问任何其他服务。

      【讨论】:

      • 两个容器都在同一个 docker-compose 文件上运行.. 并与同一个桥接网络链接。挑战在于添加路由,是( app.use('/api/tasks', proxy({ target: 'tasks_server/api/tasks'})); )正确吗?
      【解决方案4】:

      嗯,看起来有一个 express-http-proxy 包就是为了这个。

      var proxy = require('express-http-proxy');
      var app = require('express')();
      
      app.use('/proxy', proxy('www.google.com'));
      

      【讨论】:

        猜你喜欢
        • 2013-02-20
        • 2019-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多