UI 在 Docker 上启动并通过 IP 提供服务时无法访问节点服务器

UI cannot access Node server when launched on Docker and served over an IP

这是我的情况。
Docker 集装箱

1. Node/Play/Any BackEnd Server
2. React
3. Other services

我已经使用 docker-compose 启动了它们,一切正常。问题是:
当我在 VM 上启动 docker-compose 并通过 IP 为 UI 提供服务时,它无法访问节点服务器。

这是因为 React 代码被配置为在 http://node-backend:9000 访问节点服务器(其中 node-backend 是运行 nodejs 的 docker 容器的名称)并且 React 发送这个确切 URL 到其他机器上的客户端,无法解析此地址,因为 http://node-backend:9000 是 Docker.

的内部地址

如何在不使用 nginx 或任何其他代理服务的情况下解决此问题?

您应该更改 React 的配置。当您想要通过网络提供服务器时,切勿使用本地容器名称。

以下是您需要执行的步骤

  1. 节点服务器的端口映射。您可能已经在这样做了。
  2. 确保服务器上的端口 9000 是公开的。
  3. 将 React 应用配置为使用 IP 地址连接到节点服务器(非命名实例)。
  4. 此时,您应该会看到通过网络进行的调用,例如 http://:9000