介绍 在这篇文章中,我将一步步地向你展示如何在Docker上运行ABP模块零核心模板。然后,我们将讨论其他的场景,如使用网络场的redisdisand Haproxy。 正如你现在看到的,Docker 是最流行的软件容器平台。我不会详细介绍如何在windows上安装/配置Docker,或者使用Docker有什么好处。你可以在这里找到相关的文件。还有一个正在启动的文档。 什么是ABP模块零核心模板? Module zero core模板是一个初学者项目模板,使用ASP开发。净样板框架。这是一个。net核心项目,是一个单页应用程序,使用角度。还有一个多页面的MVC应用程序。但在这篇文章中,我将解释角度版本。 在module zero core template项目中有两个独立的项目,一个是作为web UI的angular4project,另一个是由angular UI使用的host project。在Docker上运行它之前,让我们先检查一下,以便更好地理解这个项目。 开始 从站点创建模板 首先,我将从https://www.aspnetboilerplate.com/Templates 站点下载模块零核心模板。 框架:。net core2.0 +单页Web应用程序角度+包含模块0 项目名称:Acme.ProjectName 在准备在Docker上运行项目之前,让我们先运行项目。我正在打开文件夹ProjectName\aspnet-core.  使用EF迁移创建数据库 在运行项目之前,我们应该在包管理器控制台使用EF migrations创建数据库。首先,我将acme . projectname . web . host设置为启动项目。(右键单击主机项目并选择设置为启动项目)。然后,打开包管理器控制台,选择default project to EntityFrameworkCore,运行下面的命令 - database就 运行此命令后,将创建名为ProjectNameDb的数据库。 主机运行项目 现在,主机项目已经准备好运行了。按visual studio Ctrl+F5。它打开swagger方法的索引页。 所有这些服务都在项目的应用层提供,并由Angular UI.  角运行项目 当主机已经运行时,我们可以运行使用api的角度项目。要运行Angular项目,确保你的机器上已经安装了node和npm。 首先,运行cmd 位置ProjectName\角度和运行命令通过“npm install”或“yarn”来获取客户端包。 在同一个目录下运行npm start 命令来启动angular项目。 最后,您必须在输出屏幕中看到一行“webpack:已成功编译”。 我们started  Angular 项目成功。打开浏览器并导航到http://localhost:4200/ 使用下面的凭据登录 管理员密码123qwe 登录后,您将看到下面的屏幕。 Check  HERE 为更多的细节。 总结一下我们为跑动角度项目所做的工作: 在locationprojectname \angular上运行cmd。运行yarn or npm install 命令(在上面的示例中,我使用了yarn)。Run  npm start 命令。浏览localhost: 4200查看angular项目是否在运行。 一切运行正常。准备在docker上运行… 在Docker上运行项目 如果你还没有安装Angular CLI,你必须安装它。运行下面的命令来安装Angular CLI。 npm安装- g @angular / cli 确保安装了Angular CLI之后,让我们看看要配置docker环境的文件和文件夹。在ProjectName/aspnet-core下有一个名为docker的文件夹。 在docker/ng 文件夹中有一个docker- composition .yml 文件和两个powershell脚本运行docker compose(up.ps1)和停止(down.ps1)它。还有一个文件夹和一个powershell脚本文件。 此脚本文件用于构建和发布主机和agular项目。并且,这个脚本将文件复制到docker文件夹中以构建文件夹。首先,我将运行使用ng构建。ps1脚本定位ProjectName/aspnet-core/build。 运行脚本之后,当您查看构建文件夹时,您将看到输出文件夹。 之前running  up.ps1 命令, 你必须共享驱动器。要共享它,右键单击Docker系统托盘,进入设置,导航到共享文件夹,然后单击所有驱动器。数据库托管在本地机器上,而不是docker上。网站托管在docker将连接到您的本地数据库。如果使用可信连接字符串,则连接将失败。所以设置你的sql数据库用户名&密码又是;为了求得th是修改文件"…\aspnet-core\src\Acme.ProjectName.Web.Host\appsettings.Staging.json". Update Default connectionstring >“服务器= 10.0.75.1;数据库= ProjectNameDb;用户= sa);密码= & lt;编写password>;“ 运行up.ps1脚本在docker的locationprojectname /aspnet-core/build/outputs下运行这两个项目。 Angular和host项目现在都在运行。用于Host project的浏览器是http://localhost:9901/ 用于Angular UI的浏览器是http://localhost:9902/  模块零核心Tepmlate网站农场Docker与使用Redis和Haproxy 在一个web场中有多个web服务器,在这些服务器的前端有一个负载均衡器,还有一个服务器用于存储共享会话/缓存。 在我们的例子中,angular应用将是客户端,haproxy将是负载均衡器,host应用将是web服务器,而redis将是共享服务器。 为haproxy创建一个配置文件,命名为haproxy.cfg 定位ProjectName\aspnet-core\docker\ng haproxy.cfg (复制粘贴代码行导致编码问题,下载文件=> 下载haproxy.cfg) 隐藏,复制Code

global
    maxconn 4096
    
defaults
    mode http
    timeout connect 5s
    timeout client 50s
    timeout server 50s
    
listen http-in
    bind *:8080
    
    server web-1 outputs_abp_host_1:80
    server web-2 outputs_abp_host_2:80
    
    stats enable
    stats uri /haproxy
    stats refresh 1s

重要的线路haproxy.cfg是server web-1和server web-2。我介绍了主机应用程序。这将在docker容器上创建两个主机应用程序。 Modified  docker-compose.yml (复制粘贴代码行使编码问题,下载文件=> 下载docker- composition .yml) 隐藏,收缩,复制Code

version: '2'

services:

    abp_redis:
        image: redis
        ports:
            - "6379:6379"     abp_host:
        image: abp/host
        environment:
            - ASPNETCORE_ENVIRONMENT=Staging
        volumes:
            - "./Host-Logs:/app/App_Data/Logs"     abp_ng:
        image: abp/ng
        ports:
            - "9902:80"
            
    load_balancer:
        image: haproxy:1.7.1
        volumes:
            - "./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg"
        ports:
            - "9904:8080"

build-with-ng.ps1 替换下面一行

(Get-Content $ngConfigPath) -replace "21021", "9901" | Set-Content $ngConfigPath

与这条线 隐藏,复制Code

(Get-Content $ngConfigPath) -replace "21021", "9904" | Set-Content $ngConfigPath

现在Angular UI将连接到haproxy。Haproxy将请求分发到web服务器。 用下面的内容覆盖 隐藏,复制Code

docker rm $(docker ps -aq)
docker-compose up -d abp_redis
sleep 3
docker-compose up -d abp_host
docker-compose up -d abp_ng
sleep 2
docker-compose scale abp_host=2
sleep 2
docker-compose up -d load_balancer

要使用redis缓存install&bb . rediscache 库到projectname . web . core项目。和update  ProjectNameWebCoreModule.cs 如: 隐藏,复制Code

[DependsOn(...,
     typeof(AbpRedisCacheModule))]
public class ProjectNameWebCoreModule : AbpModule
{

在预先初始化方法中增加redis缓存配置。 隐藏,复制Code

public override void PreInitialize()
{
...   Configuration.Caching.UseRedis(options =>
    {
       var connectionString = _appConfiguration["Abp:RedisCache:ConnectionString"];
        if (connectionString != null && connectionString != "localhost")
        {
            options.ConnectionString = AsyncHelper.RunSync(() => Dns.GetHostAddressesAsync(connectionString))[0].ToString();
        }
})
 
  ...

添加复述,configurations  appsettings.staging.json。 appsettings.staging.json 隐藏,复制Code

{
  ...,
  "Abp": {
    "RedisCache": {
      "ConnectionString": "outputs_abp_redis_1"
    }
  }
}

outputs_abp_redis_1是redis容器的名称,这个名称是docker自动定义的。更改之后,主机项目将解析所部署的机器的dns。现在,当我运行build-with-ng.ps1和up.ps1时,web farm项目将运行。,结果: 可以看到,所有容器都在工作。当你浏览http://localhost:9902 你可以看到Angular UI正在工作。 我怎么知道Haproxy和redisis是否有效呢? 有工具跟踪haproxy活动(haproxy web接口)和获取redis存储数据(redis cli)。 Haproxy web界面 当您浏览http://localhost:9904/haproxy 时,您将看到如下内容。 当你在angular应用程序页面之间导航或者在host项目上运行任何api (http://localhost:9904)时,你会发现haproxy正在将请求路由到不同的机器上。您可以通过正在为web-1和web-2更改的会话速率选项卡跟踪哪台机器正在运行。 复述,cli 要了解redis是否在工作,您可以使用redi -cli。运行docker exec - outputs_abp_redis_1 redis- cli&command 运行redis-cli 交互模式连接redis服务器是运行在docker容器。然后测试是否redis运行,写ping 命令,它将返回PONG 如果它工作。现在,当我写入keys * 命令时,我应该获得应用程序缓存键。 正如你所看到的,redis运行得很好。缓存键存储在redis,正确。 源代码 您可以在这里获得修改后的源代码:https://github.com/aspnetboilerplate/aspnetboilerplate-samples/tree/master/ModuleZeroCoreWebFarm , 本文转载于:http://www.diyabc.com/frontweb/news19840.html

最新文章

  1. 黑马程序员——【Java高新技术】——类加载器
  2. redis linux安装与简单集群配置
  3. ITK 4.8.1 Qt 5.4 MinGW 4.9.1 Configuration 配置
  4. 如何让Advanced Installer卸载软件时保留一些文件
  5. Light oj 1234 - Harmonic Number
  6. javascript实现暂停
  7. Jquery 判断滚动条到达顶部或底部
  8. SQL基础笔记
  9. 爬虫协议robots
  10. mpvue——动态渲染echarts图表
  11. 提升算法——Adaboost
  12. 构建之法 chapter1 心得
  13. poj3617 Best Cow Line(贪心,字典序问题)
  14. Java工程师学习指南 完结篇
  15. day23面向对象编程基础
  16. 移动端实现上拉加载更多(使用dropload.js vs js)
  17. 第二阶段每日站立会议Fifth Day
  18. plsql链接数据库配置
  19. 剑指Offer——数组中的逆序对
  20. Linux目录结构与文件权限——(五)

热门文章

  1. 手机预览本地html
  2. Activiti7 流程变量(UEL-Value方式)
  3. DSRC和USRP的购买调研
  4. 按照BNF语法重新写就的JsonAnalyzer2
  5. Tomcat cluster方案共享session配置成功,yeah....
  6. Mybatis-使用注解开发
  7. 微信小程序爬坑记
  8. git 快速入门及常用命令
  9. 【二叉树-所有路经系列(根->叶子)】二叉树的所有路径、路径总和 II、路径总和、求根到叶子节点数字之和(DFS)
  10. [LeetCode]547. 朋友圈(DFS)