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 的配置。当您想要通过网络提供服务器时,切勿使用本地容器名称。
以下是您需要执行的步骤
- 节点服务器的端口映射。您可能已经在这样做了。
- 确保服务器上的端口 9000 是公开的。
- 将 React 应用配置为使用 IP 地址连接到节点服务器(非命名实例)。
- 此时,您应该会看到通过网络进行的调用,例如 http://:9000
这是我的情况。
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 的配置。当您想要通过网络提供服务器时,切勿使用本地容器名称。
以下是您需要执行的步骤
- 节点服务器的端口映射。您可能已经在这样做了。
- 确保服务器上的端口 9000 是公开的。
- 将 React 应用配置为使用 IP 地址连接到节点服务器(非命名实例)。
- 此时,您应该会看到通过网络进行的调用,例如 http://:9000