介绍 在这篇文章中,我将一步步地向你展示如何在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. openresty(nginx+lua)初识

    1.新增项目配置文件: vim /usr/example/example1.conf --将以下内容加入example1.conf server { listen 80; server_name _; ...

  2. 小程序mpvue中flyio的使用方法

    Fly.js 一个基于Promise的.强大的.支持多种JavaScript运行时的http请求库. 有了它,您可以使用一份http请求代码在浏览器.微信小程序.Weex.Node.React Nat ...

  3. 非构造函数方式创建DbContext实例的方法

    using Microsoft.EntityFrameworkCore;using Microsoft.EntityFrameworkCore.Design;using Microsoft.Entit ...

  4. Tomcat cluster方案共享session配置成功,yeah....

    后继版本:https://www.cnblogs.com/xiandedanteng/p/12143112.html 参考网文: 1.Tomcat官方文档 2.https://blog.51cto.c ...

  5. 基础Html重点——防健忘

    一.head标签重点 <head> <meta charset="utf-8"> <title>第二天课</title> <! ...

  6. 如何使用JSTL获取并显示数据

    首先在×××controller里查询数据,并绑定,代码如下: /** * 显示所有租借信息 默认进入这个方法 * * @param resp * @param req * @param manage ...

  7. [程序员代码面试指南]递归和动态规划-数字字符串转换为字母组合的种数(DP)

    题意 给一个字符串,只由数字组成,若是'1'-'26',则认为可以转换为'a'-'z'对应的字母,问有多少种转换方法. 题解 状态转移很好想,注意dp多开一位,dp[0]为dp[2]的计算做准备.dp ...

  8. Redis Cluster集群架构实现

    Redis集群简介 通过前面三篇博客的介绍<Redis基础认识及常用命令使用(一)–技术流ken>,<Redis基础知识补充及持久化.备份介绍(二)–技术流ken>,<R ...

  9. 用友yonsuite产品二开之简单的yonsql查询小工具

    和以往的用友产品不同,yonsuite产品开发了低代码平台,满足客户的个性化开发需求.嗯~,一句话不知当讲不当讲,那就讲:所谓低代码平台就是开发不想用实施不会用系列.让我一个开发感受到了憋屈.

  10. Vue环境搭建、创建与启动、案例

    vue环境搭建 """ 1) 安装node 官网下载安装包,傻瓜式安装:https://nodejs.org/zh-cn/ 2) 安装cnpm npm install - ...