gpt4 book ai didi

docker - 如何让 Docker 容器在我的本地主机上运行时相互通信?

转载 作者:IT老高 更新时间:2023-10-28 12:42:17 24 4
gpt4 key购买 nike

我的 MacBook 上有一个完全在本地运行的 Web 应用程序。

Webapp 有一个前端 (Angular/Javascript) 和一个实现 RESTful API 的后端 (Python/Django)。

我已将后端 Docker 化,使其在 Docker 容器中完全自包含并公开端口 8000。我将此端口本地映射到 4026。

现在我需要对前端进行 Dockerize 化。但是如果我在我的本地主机上运行这两个 docker 容器,我怎样才能让 FE 向 BE 发送 HTTP 请求? FE 容器不知道存在于它之外的任何东西。对吧?

这就是我运行 FE 的方式:

$ http-server
Starting up http-server, serving ./
Available on:
http://127.0.0.1:8080
http://192.168.1.16:8080
Hit CTRL-C to stop the server

请提供引用资料说明我如何实现这一目标。

最佳答案

今天的方法是Docker Networking .

简短的版本是您可以运行 docker network ls 来获取您的网络列表。默认情况下,您应该有一个名为 bridge 的文件。您可以创建一个新容器,也可以通过在创建容器时传递 --net=bridge 来使用这个容器。从那里,使用同一网络启动的容器可以通过暴露的端口相互通信。

如果您使用 Docker Compose如前所述,当您运行 docker-compose up 时,它将为您创建一个桥接网络,其名称与您的项目文件夹匹配并附加 _default。 Compose 文件中定义的每个图像都会自动在此网络中启动。

话虽如此,我猜你的前端是一个只提供 HTML/JS/CSS 的网络服务器,而这些页面访问后端服务。如果这是准确的,那么在这种情况下,您实际上并不需要容器到容器的通信......两者都需要暴露给主机,因为连接来自客户端系统。

关于docker - 如何让 Docker 容器在我的本地主机上运行时相互通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41093812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com