新的...
我试图了解是否应该使用3个或2个Docker容器部署现代MEAN应用程序:
选项1: Express Server作为容器+ Mongo DB作为容器
选项2:所有三个作为单独的Docker容器
第二个选项听起来像是相应的路径,因此您可以更新堆栈的任何部分,而不必删除其他组件(如果您不想这样做)。但问题是ng app容器是否需要它自己的服务器来提供ng app文件。我在Github上看到一些例子,他们在Docker容器中运行带有ng serve -H 0.0.0.0
的ng应用程序,我的理解是 no-no ,因为那不是一个prod ready服务器,只是webpacks dev服务器。
对我来说,如果你分别运行所有这三个,那么你实际上需要两个服务器,一个用于服务器应用程序(index.html,js,css等),另一个服务器用于切断后端应用程序API。 / p>
如果您在一个容器中运行Express Sever + ng应用程序,我看到的优势是,您可以使用ng应用程序依赖项和API提供初始index.html
,但是当它们更新时它们都会关闭。
这里的最佳做法是什么?
答案 0 :(得分:2)
恕我直言2容器似乎是一个更好的解决方案,一个用于Mongo,一个用于Express。无论什么时候推送新代码,如果后端关闭,前端仍然没有意义,反之亦然。同时为同一服务器提供前端文件减少了处理CSRF的麻烦。
关于您的其他问题,我认为您可以将您的前端部署到AWS S3之类的东西,并且仍然只为您的后端管理一台服务器。
在旁注中,您也可以在一个容器中完成所有操作。这确实取决于您的其他要求,以找出最佳架构。