我需要部署一个docker compose项目,其中包括几个服务(两个API,数据库和其他)。为了将这两个API暴露给网络,我配置了一个Nginx容器作为反向代理。
我还需要公开一个在React中开发的Web App,因此会产生一个完全静态的构建。
由于Docker Compose中的所有其他服务都由一个单独的项目组成,该项目拥有自己的GitHub存储库,并拥有自己的管道来构建Docker镜像并将其推送到注册表,因此我想为React App做同样的事情。
我应该构建一个自定义的Nginx镜像,包括容器中的React App文件,然后让Nginx执行反向编译,同时也为Web App的文件提供服务,还是应该将React App部署为具有自己的HTTP服务器的Docker镜像,并让Nginx代理请求到新容器,就像我对其他服务所做的那样?
秒解决方案似乎更好,因为它允许我将React应用程序视为“服务之一”,但我担心它可能会毫无用处地复杂和/或性能低下。
谢谢你,谢谢
1条答案
按热度按时间pbwdgjma1#
这两种方法都是有效的,具体选择取决于您的具体要求。
方法1:Nginx提供React应用文件
优点:
简单性:单个Nginx容器同时服务API请求和静态文件。一致性:类似地处理所有服务。缺点:
性能:与专门的Web服务器相比,Nginx在服务静态文件方面的性能可能较差。
方法二:为React App分离Docker镜像
优点:
隔离:每个服务都在自己的容器中,以实现更高的隔离。可扩展性:允许独立扩展React App。缺点:
复杂性:管理多个容器可能会带来复杂性。资源开销:运行单独的HTTP服务器可能会带来一些资源开销。