【问题标题】:Frontend and backend in one single docker container. Which IP address to use?前端和后端在一个 Docker 容器中。使用哪个 IP 地址?
【发布时间】:2021-02-22 20:53:37
【问题描述】:

我有一个 docker 容器在端口 3000 上运行前端(react),在端口 8000 上运行后端(django)。从容器内部我可以运行

wget localhost:8000/

然后我拿回服务器必须给我的东西。如果我转发端口 8000 并从容器外部调用 wget,这也有效。

但是前端呢?由于它驻留在后端的同一个容器中,我想它驻留在同一个本地主机中,因此它应该能够使用

从后端检索信息
wget localhost:8000/

但这不是发生的事情(我得到 ERR_CONNECTION_REFUSED) 是不是因为当我运行前端时,请求实际上来自我本地机器上的浏览器,它位于容器之外(也位于服务器之外)?

或者我有什么问题,wget localhost:8000/ 应该也可以在我的浏览器上运行?

【问题讨论】:

  • 您实际上是如何“运行”前端的?它是否被编译成静态文件,在这种情况下像 http://localhost:8000/static 这样的 URL 可以检索它?或者您是否尝试在与后端相同的容器中运行开发服务器,在这种情况下,第二个容器可能更简单、更清晰?

标签: django docker networking


【解决方案1】:

前端在您的浏览器中运行,因此您认为请求来自您的浏览器是正确的。在这种情况下,您必须为 Django 后端公开一个端口,以便您的浏览器可以从“公共”IP 空间访问它。

【讨论】:

    【解决方案2】:

    听起来好像只映射了 8000 端口。

    如果您启动容器,请确保添加 -p 3000:3000

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-13
      • 2020-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-19
      相关资源
      最近更新 更多