对于一个项目,我正在构建一个Web应用程序,该应用程序利用了我开发的各种宁静组件。现在我有:
所有组件都是RESTful的。现在,我正在使用java(Spring)组件(1)来托管我的网页和所有前端。我也希望该网页也单独托管,并有一种正确的方式在组件之间进行通信(现在,我只运行它们,然后根据它们所在的端口将请求发送到localhost:xxxx)。
最终,我希望有一个可执行文件,其结构类似于下面的结构。请注意,我不希望从解决方案的环境外部访问API。
答案 0 :(得分:0)
有很多方法可以做到这一点。您可以容器化您的api,但要取决于您要如何运行它们。如果您正在考虑使用云服务,则所有云服务都提供了运行容器的不同选项。
是否可以使用Docker做到这一点?
您可以在容器中独立运行这些api,但通常必须使用某种容器编排服务(例如kubernetes)来运行容器。
在我可以使用该代码后,可以在哪个地址到达代码中的API?
您将包括Web前端在内的所有api打包在容器中,并部署到节点集群的kubernetes。只有您的前端会分配外部IP,而其他API只能通过前端访问,因为它们位于带有私有IP的防火墙后面。 kubernetes内部拥有自己的网络,可以通过服务名称简单地访问集群中的服务(您的api)。
另一种方法是在虚拟网络中部署所有api,只有前端(具有公共ip)才能访问这些服务。
如何在没有任何后端的情况下分别运行前端,并使其可以从环境外部访问?
您可以如上所述在kubernetes中将前端作为容器运行,也可以将静态前端(仅htm css)部署到某些静态托管中,例如aw s3或azure静态网站。