介绍 在这篇文章中,我将一步步地向你展示如何在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

Dockerize ASP。净样板项目的更多相关文章

  1. ABP(现代ASP.NET样板开发框架)系列之1、ABP总体介绍

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之1.ABP总体介绍 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

  2. ABP(现代ASP.NET样板开发框架)系列之2、ABP入门教程

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之2.ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

  3. ABP(现代ASP.NET样板开发框架)系列之3、ABP分层架构

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之3.ABP分层架构 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

  4. ABP(现代ASP.NET样板开发框架)系列之4、ABP模块系统

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之4.ABP模块系统 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

  5. ABP(现代ASP.NET样板开发框架)系列之5、ABP启动配置

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之5.ABP启动配置 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

  6. ABP(现代ASP.NET样板开发框架)系列之6、ABP依赖注入

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之6.ABP依赖注入 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

  7. ABP(现代ASP.NET样板开发框架)系列之7、ABP Session管理

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之7.ABP Session管理 ABP是“ASP.NET Boilerplate Project (ASP.NET ...

  8. ABP(现代ASP.NET样板开发框架)系列之8、ABP日志管理

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之8.ABP日志管理 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

  9. ABP(现代ASP.NET样板开发框架)系列之9、ABP设置管理

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之9.ABP设置管理 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

随机推荐

  1. POJ-2104-K-th Number(区间第K大+主席树模板题)

    Description You are working for Macrohard company in data structures department. After failing your ...

  2. Netty学习笔记-入门版

    目录 Netty学习笔记 前言 什么是Netty IO基础 概念说明 IO简单介绍 用户空间与内核空间 进程(Process) 线程(thread) 程序和进程 进程切换 进程阻塞 文件描述符 文件句 ...

  3. Prometheus 与 国产 TDengine 的对比

    通过对比,能加深对这两个系统的理解,方便后续架构选型时作出正确决定.他们的设计思路有很多值得借鉴的地方,虽然工作中需要用到这些知识的地方不多,但是了解他们的设计细节能极大满足我的好奇心. 1.场景和需 ...

  4. 小程序里的request

    test.js 代码如下: makeRequest: function (e) { var self = this wx.request({ url: 'http://lt.com/home/inde ...

  5. leetcode刷题-90子集 II

    题目 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: [1,2,2]输出:[ [2], [1], [1,2,2], [ ...

  6. 虚拟机:主机能ping通虚拟机,虚拟机不可以ping通主机

    解决办法: 1.虚拟机可使用nat模式 2.虚拟机使用桥接模式,并且和主机再同一个ip段内 3.主机的防火墙关闭(不推荐使用,主机不安全) 4.主机中有个ICMPv4-In这个规则需要启用: 打开防火 ...

  7. JZOJ1496 页

    Description 战神阿瑞斯听说2008年在中华大地上,将举行一届规模盛大的奥林匹克运动会,心中顿觉异常兴奋,他想让天马在广阔的天空上,举行一场精彩的天马队列变换表演.首先,战神安排n头高度不同 ...

  8. oracle之二实例管理及数据库的启动/关闭

    实例管理及数据库的启动/关闭   2.1 实例和参数文件 1.instance 功能:用于管理和访问database.instance在启动阶段读取初始化参数文件(init parameter fil ...

  9. 抓包工具Burp Suite安装步骤(待补充)

    Burp Suite V2.1(破解版)安装步骤:(可以自行下载破解版或汉化版) 百度网盘下载地址: 链接:https://pan.baidu.com/s/1bU5JME3OsEsXrSirTdesR ...

  10. UI中table写表格