Docker是目前最受欢迎的软件容器平台。本文不会详细介绍如何在Windows上安装/配置Docker,或者使用Docker的优势。可以在这里找到相关文档。本文将介绍如何使用Docker运行ABP Module Zero Core Template项目。
ABP Module Zero Core Template是一个使用ASP.NETBoilerplate框架开发的启动项目模板。这是一个.NET Core项目,作为单页应用程序使用Angular4实现。同时,还有一个多页MVC应用程序版本。但本文将解释Angular4版本。
在准备项目运行在Docker之前,先运行一下项目。首先,打开位于ProjectName\aspnet-core文件夹中的.sln文件。
在运行项目之前,应该使用EF迁移在Package Manager Console上创建数据库。首先,将Acme.ProjectName.Web.Host设置为启动项目(右键单击Host项目,然后选择"设置为启动项目")。然后,打开Package Manager Console,选择默认项目为EntityFrameworkCore,运行以下命令:
update-database
运行此命令后,将创建名为ProjectNameDb的数据库。
现在,主机项目已准备好运行。在Visual Studio中按Ctrl+F5。它将打开swagger方法索引页面。
主机已经运行,可以运行使用API的Angular项目。要运行Angular项目,请确保机器上安装了node和npm。
首先,在ProjectName\angular位置运行cmd,然后运行命令"npm install"或"yarn"来获取客户端包。在同一目录下运行npm start命令以启动Angular项目。
最后,必须在输出屏幕上看到"webpack: Compiled successfully"这一行。
如果还没有安装AngularCLI,必须安装它。运行以下命令来安装Angular CLI:
npm install -g @angular/cli
确保AngularCLI安装后,让看看配置Docker环境的文件和文件夹。在ProjectName/aspnet-core下有一个名为docker的文件夹。
在docker/ng文件夹中,有一个docker-compose.yml文件和两个用于运行和停止docker compose的powershell脚本(up.ps1和down.ps1)。还有一个脚本文件用于构建和发布主机和Angular项目。
首先,将在ProjectName/aspnet-core/build位置运行build-with-ng.ps1脚本。
在Web农场中,有多个Web服务器,这些服务器前面有一个负载均衡器,还有一个用于存储共享会话/缓存的服务器。
在示例中,Angular应用程序将是客户端,haproxy将是负载均衡器,主机应用程序将是Web服务器,redis将是共享服务器。
有工具可以跟踪haproxy活动(haproxy web界面)和获取redis存储的数据(redis cli)。
当浏览http://localhost:9904/haproxy时,将看到类似以下内容:
当在Angular应用程序页面之间导航或在主机项目上运行任何API时(http://localhost:9904),可以看到haproxy将请求路由到不同的机器。可以通过"Session rate>Cur"标签页跟踪哪台机器正在运行web-1和web-2。