Docker: 一个容器内的多个服务,如何访问localhost?

Docker: Multiple services within a single container, how to access localhost?

我已经在带有 -buster (Debian) 图像基础的单个容器中设置了 Flask 后端和 React 前端,并且 运行 都使用 Supervisord(我知道这不是好的做法,但这是必需的我的用例)。我的 React 前端组件如何访问 Flask 后端端点?有没有办法让我检查 Debian OS 中 'active' 的端口?

我的前端正在使用端口 3000,在 Docker 运行 命令期间该端口暴露给我的机器:

docker run -it --rm -p 3000:3000 test_app

我的后端正在使用端口 5000,我不想向我的机器公开一个端口,因此我没有使用 -p 5000:5000

公开它

如何让我的 React 前端访问 Docker 容器中的 Flask 后端端点?可能是监督配置?

如果你的意思是你在 3000 端口有一个网络服务器 运行 并且在同一个容器中有另一个后端服务器 运行 并且你想从网络服务器访问后端,那么你可以使用 localhost接口。


如果您想从完全客户端 运行 用户浏览器的 React 应用程序连接到后端,那么您无法在 localhost 访问后端。您将需要发布后端端口并通过端口连接。


你可以做的是让像 nginx 这样的反向代理网关同时为你的前端和后端服务 api。 https://microservices.io/patterns/apigateway.html