当前,我正在开发一个应用程序,该应用程序使用完全码头化的Node API服务(由Docker Nginx在本地提供服务)和一个简单的React前端(通过PHP代客在本地提供服务)。
运行docker-compose up
,可在端口80上成功托管在Nginx上的dockerized应用程序构建,并且代理将请求传递到端口9999上的节点API。
我遇到的问题是让React前端与dockerized节点API通信。
理想情况下,我想选择其中一个;将dockerized Node api服务移至PHP代客服务,或将前端Webapp也移至docker nginx服务
我如何才能将前端和后端服务完全泊坞在一起,以便它们彼此对话(理想情况下两者都托管在端口80上),或者建议我如何将Valet或MAMP与容器化Node API一起使用。
答案 0 :(得分:2)
我如何才能将前端和后端服务完全泊坞在一起,以便它们彼此对话(理想情况下两者都托管在端口80上),或者建议我如何将Valet或MAMP与容器化节点API一起使用。
不管有没有Docker,自two URLs have the same origin if the protocol, port and host are the same开始,您对后端的前端请求(XMLHttpRequest和其他一些请求)都会面临相同的原始策略。
如果两个应用是容器,则主机在设计上会有所不同,因为它们是两个不同的容器。如果将前端应用程序保留在主机上,情况也将如此。
因此,无论如何,您至少应enable CORS in the backend side (NodeJS)接受前端主机的请求。从前端来看,不需要任何东西,因为CORS是浏览器中的东西:它将飞行前请求发送到目标主机以获取资源共享协议。
关于使前端成为Docker容器,我认为,如果前端旨在与Node后端一起使用,则您可能还应该使该docker image / container并使用docker-compose
来管理它们:使它们更易于管理/维护。
答案 1 :(得分:0)
将前端构建为静态HTML,并从静态目录的后端提供它。
React前端已加载到用户的计算机上,并在其浏览器中执行。它通过HTTP(S)与服务器通信。
您现在如何使用React应用程序? React应用只是通过HTTP提供的纯文本文件。