MEAN堆栈使用docker集装箱

新的这个…

我试图了解一个现代MEAN应用是否应该部署3或2个Docker容器:

选项1: Express Server作为容器+ Mongo DB作为容器

选项2:所有三个作为单独的Docker容器

第二个选项听起来像适当的path,所以你可以更新堆栈的任何部分,而不会取消其他组件,如果你不想。 但是接下来的问题是ng应用程序容器是否需要它自己的服务器来提供ng应用程序文件。 我在Github上看到一些例子,他们使用ng serve -H 0.0.0.0从Docker容器中运行ng应用程序,根据我的理解,这是一个no-no,因为这不是一个prod就绪服务器,只是webpacks dev服务器。

对我来说,如果你分别运行所有三个,那么你实际上需要两个服务器,一个服务于ng应用程序(index.html,js,css等),另一个切断后端应用程序API。

如果您在一个容器中运行Express Sever + ng应用程序,那么您可以使用ng应用程序依赖项和API来初始化index.html ,但是当它们更新时,它们都会closures。

这里最好的做法是什么?

恕我直言2容器似乎是一个更好的解决scheme与Mongo和Express。 无论何时,当您推出新代码时,如果后端停止运行,前端仍然处于无效状态,反之亦然。 同时服务于同一台服务器的前端文件也减less了处理CSRF的麻烦。

关于您的其他问题,我认为您可以将自己的前端部署到AWS S3之类的服务器上,并且仅为后端pipe理一台服务器。

在旁注中,您也可以在一个容器中完成所有操作。 这确实取决于你的其他要求找出最好的架构。

Interesting Posts