我有一个完全在MacBook本地运行的Webapp。
Webapp具有实现RESTful API的前端(Angular / Javascript)和后端(Python / Django)。
我已经对后端进行了Docker化,以使其完全独立于Docker容器并暴露端口8000。我将此端口本地映射到4026。
现在我需要对前端进行Docker化。但是,如果我在本地主机上运行了这两个docker容器,如何获取FE以将HTTP请求发送到BE?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 network ls
bridge
--net=bridge
如果您如上所述使用Docker Compose,它将在运行时为您创建一个桥接网络docker-compose up,其名称与项目文件夹相匹配并_default附加。Compose文件中定义的每个映像将自动在此网络中启动。
docker-compose up
_default
话虽如此,我想您的前端是一个只提供HTML / JS / CSS的Web服务器,而这些页面访问后端服务。如果这是正确的话,那么在这种情况下,您实际上并不需要容器到容器的通信……因为连接都是从客户端系统发起的,所以两者都需要暴露给主机。