如何容器化用angular和.net框架构建的web应用程序?



我有一个使用Angular10作为前端构建的应用程序,后端使用。net框架(+Entity框架)编写。我的数据库是SQL Server。我有两个独立的生产包。一个是前端包(dist文件夹),第二个是后端包(已发布文件夹)。我还在服务器上分别部署了这两个包。但是,目前的需求是在云中托管应用程序,而云提供商是AWS。现在,我的疑问是,我需要创建两个单独的容器还是一个单独的容器?那么,数据库呢?

我不太了解。net框架和应用程序要遵循的实际架构,但有两个主要的AWS服务你绝对应该使用。

弹性容器存储库-为您提供个人Docker Hub。你可以推送和拉取docker镜像。

弹性容器服务-处理容器的编排工具。它有一个子服务/组件叫做TaskDefinition在这里,你可以为你的Docker镜像定义属性,卷,环境变量,就像你在Docker -compose中所做的那样。

现在,正如我前面所说的,这实际上取决于您想要的架构类型。如果你想要独角戏类型,你只需要在弹性容器服务中创建一个服务,对应于一个或两个图像,后端和前端。我说一个或两个是因为,正如我之前所说,我对。net框架了解不多,但我知道Java SpringBoot,而且有一种方法可以将Angular中的所有内容打包到SpringApplication Jar中,使其成为一个Docker映像。

如果你想把所有的东西都分开,用它们自己的负载均衡器(如果你正在使用它们),健康检查,自动可伸缩性等等,你可以创建2个Docker映像,在它们自己的弹性容器服务中单独管理。

Docker镜像可以通过使用Codebuild创建或者直接在本地创建它们并推送到您的私有存储库。

你可以在这里查看一些文档:

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html

https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html