我的 MacBook 上有一个完全本地运行的 Web 应用程序。
Web 应用程序有一个前端 (Angular/Javascript) 和一个实现 RESTful API 的后端 (Python/Django)。
我对后端进行了 Docker 化,使其完全独立于 Docker 容器并公开端口 8000。我将此端口本地映射到 4026。
现在我需要对前端进行 Docker 化。但是如果我在本地主机上运行这两个 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 网络 https://docs.docker.com/engine/userguide/networking/work-with-networks/.
简短的版本是你可以运行docker network ls
获取您的网络列表。默认情况下,您应该有一个名为bridge
。您可以创建一个新的,也可以通过传递来使用这个--net=bridge
创建容器时。从那里,使用同一网络启动的容器可以通过公开的端口相互通信。
如果你使用Docker 组合 https://docs.docker.com/compose/正如已经提到的,当你运行时它会为你创建一个桥接网络docker-compose up
名称与您的项目文件夹匹配,并且_default
附加。 Compose 文件中定义的每个图像都将自动在此网络中启动。
综上所述,我猜您的前端是一个网络服务器,仅提供 HTML/JS/CSS 服务,而这些页面访问后端服务。如果这是准确的,那么在这种情况下您实际上并不需要容器到容器的通信...两者都需要暴露给主机,因为连接源自客户端系统。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)