• 基于 abp vNext 微服务开发的敏捷应用构建平台


    环境准备

    ABP vNext 微服务官方介绍的系统架构图如下:

    ABP vNext 微服务

    运行要求

    • SQL Server 2015+ (可以是 express edition)
    • Redis 5.0+
    • RabbitMQ 3.7.11+
    • MongoDB 4.0+
    • ElasticSearch 6.6+
    • Kibana 6.6+ (可选,建议显示日志)

    我所使用的环境

    • Windows 10 专业版
    • Docker Desktop
    • Visual Studio 2019
    • .Net Core 3.1-buster
    • SQL Server latest
    • MySQL 5.7
    • Redis alpine
    • RabbitMQ 3-management-alpine
    • MongoDB latest
    • ElasticSearch 7.8.0
    • Logstash 7.8.0
    • Kibana 7.8.0

    项目源码:【Github】

    https://github.com/zhang8043/AgileWork

    安装 Visual Studio 2019

    下载 Visual Studio

    通过官方下载Visual Studio:【下载 Visual Studio】

    https://visualstudio.microsoft.com/zh-hans/downloads/

    Visual Studio 2019安装教程

    官方Visual Studio安装教程:【安装教程】

    https://docs.microsoft.com/zh-cn/visualstudio/install/install-visual-studio?view=vs-2019

    Windows下安装Docker

    下载Docker for Windows安装文件:【下载 Docker Desktop】

    https://www.docker.com/products/docker-desktop

    运行安装文件

    双击下载的 Docker for Windows Installer 安装文件,一路 Next,点击 Finish 完成安装。

    镜像加速

    此处使用阿里云的加速器,因为在使用docker的时候,会需要从docker的网站下载镜像文件,下载速度可能会很慢。获得阿里云加速,需要登录阿里云开发者平台,然后点击右侧的管理中心(当然你得要有一个账户):
    阿里云容器镜像服务:【镜像加速】

    https://cr.console.aliyun.com/

    • 复制红色方框中的代码,打开CMD,粘贴进去替换个人Key就可以运行
    docker-machine create --engine-registry-mirror=https://个人Key.mirror.aliyuncs.com -d virtualbox default
    

    • 打开Docker for Windows点击Settings-Docker Engine配置registry-mirrors

    Docker for Windows

    开发环境搭建

    获取项目源码

    通过GitHub获取项目源码:【获取源码】

    https://github.com/zhang8043/AgileWork

    项目结构

    • _run
      • __Open_Browser.ps1 - 打开浏览器
      • __Run_All_Service.ps1 - 运行全部项目
      • __Run_Docker_Service.ps1 - 运行项目到 Docker
      • __Run_Infrastructure.ps1 - 运行 Docker 基础设施
      • __Stop_Docker_Service.ps1 - 停止 Docker 项目
      • __Stop_Infrastructure.ps1 - 停止 Docker 基础设施
      • 01_AuthServer.ps1 - 运行授权服务
      • 02_BackendAdminService.ps1 - 运行后台管理服务
      • 03_InternalGateway.ps1 - 运行内部网关
      • 04_BackendAdminGateway.ps1 -运行后台管理网关
    • data - 数据库文件
    • docs - 文档文件
      • images
      • releases
    • elk - ELK 日志配置
    • logs - Docker 项目运行日志
    • service - 后台服务
      • auth - 授权
        • AuthServer.Host - 授权服务
      • framework - 框架
      • gateways - 网关
        • BackendAdminGateway.Host -后台管理网关
        • InternalGateway.Host - 内部网关
      • microservices - 服务
        • BackendAdminService.Host - 后台管理服务
      • modules - 模块
        • account - 账户
        • audit-logging - 日志
        • backend-admin - 后台
        • feature-management - 功能
        • file-management - 文件
        • identity - 身份认证
        • identityServer - 认证服务
        • permissions-management - 权限
        • setting-management - 设置
        • tenant-management - 租户
      • shared - 共有
      • common.props
      • Microservice.sln
    • .dockerignore
    • .gitignore
    • docker-compose.infrastructure.override.yml - Docker 基础设施(环境变量、参数)
    • docker-compose.infrastructure.yml - Docker 基础设施
    • docker-compose.override.yml - Docker 项目运行(环境变量、参数)
    • docker-compose.yml - Docker 项目运行
    • README.md

    Docker 运行

    项目根目录 下运行 docker-compose 命令或使用 PowerShell 运行 _run 文件夹下的脚本

    运行基础设施环境

    使用 PowerShell 运行 _run 文件夹下的 __Run_Infrastructure.ps1 脚本或:

    docker-compose -f docker-compose.infrastructure.yml -f docker-compose.infrastructure.override.yml up -d
    

    根据个人配置修改以下docker-compose文件,将yourStrong(!)Password修改为个人密码

    docker-compose.infrastructure.yml

    version: '3.7'
    
    services:
    
      mysql:
        image: 'mysql:5.7'
        restart: always
        container_name: microservice_mysql
        volumes:
          - ./data/mysql:/var/lib/mysql
          
      sqlserver:
        image: mcr.microsoft.com/mssql/server
        container_name: microservice_sqlserver
        volumes:
          - dbdata:/var/opt/mssql
    
      mongodb:
        image: mongo
        container_name: microservice_mongo
    
      rabbitmq:
        image: 'rabbitmq:3-management-alpine'
        container_name: microservice_rabbitmq
    
      redis:
        image: redis:alpine
        container_name: microservice_redis
    
      elasticsearch:
        image: 'docker.elastic.co/elasticsearch/elasticsearch:7.8.0'
        container_name: microservice_elasticsearch
        volumes:
          - esdata:/usr/share/elasticsearch/data
    
      logstash:
        image: 'docker.elastic.co/logstash/logstash:7.8.0'
        container_name: microservice_logstash
        depends_on:
          - elasticsearch
    
      kibana:
        image: 'docker.elastic.co/kibana/kibana:7.8.0'
        container_name: microservice_kibana
        depends_on:
          - elasticsearch
            
    volumes:
      dbdata:
      esdata:
    

    docker-compose.infrastructure.override.yml

    version: '3.7'
    
    services:
    
      mysql:
        environment:
          MYSQL_ROOT_PASSWORD: yourStrong(!)Password
        command:
          --default-authentication-plugin=mysql_native_password
          --character-set-server=utf8mb4
          --collation-server=utf8mb4_general_ci
          --explicit_defaults_for_timestamp=true
          --lower_case_table_names=1
          --default-time-zone=+8:00
        ports:
          - 3306:3306
        
      sqlserver:
        volumes:
          - ./data/mssql:/var/opt/mssql/data
        environment:
          - SA_PASSWORD=yourStrong(!)Password
          - ACCEPT_EULA=Y
        ports:
          - '1433:1433'
    
      mongodb:
        ports:
          - '27017:27017'
    
      rabbitmq:
        environment:
          RABBITMQ_DEFAULT_USER: admin
          RABBITMQ_DEFAULT_PASS: yourStrong(!)Password
        ports:
          - '15672:15672'
          - '5672:5672'
    
      redis:
        ports:
          - '6379:6379'
    
      elasticsearch:
        volumes:
          - ./elk/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
        environment:
          - 'ES_JAVA_OPTS=-Xms512m -Xmx512m'
        ports:
          - '9200:9200'
    
      logstash:
        volumes:
          - ./elk/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:ro
          - ./elk/logstash/pipeline:/usr/share/logstash/pipeline:ro
        environment:
          - 'LS_JAVA_OPTS=-Xmx256m -Xms256m'
        ports:
          - '9600'
          - '5000'
    
      kibana:
        volumes:
          - ./elk/kibana/config/:/usr/share/kibana/config:ro
        ports:
          - 5601:5601
    
    
  • 相关阅读:
    程序员们,让你的孩子当个网页工程师吧!
    罗永浩:锤子手机一共卖了12万部(但计划50万)……我已经交出微博密码……(老罗想通了:-))
    母婴市场两万亿,我独钟情于尿布?已获千万级天使的垂直电商“尿布师”,其商业逻辑是这样的
    梵高眼里的《星空》究竟有多美,利用机器学习和图像处理来扩展整幅画的全局景象~
    编程王道,唯“慢”不破
    BAT,你好!字幕组,再见!——也许要跟美剧说再见了~
    Google想出了一个决定人员晋升的算法,然后就没有然后了......
    程序员需要经纪人吗?10x 最好的程序员其生产力相当于同行的 10 倍~
    比特币 Bitcoin 是什么,我勒个去,哈耶克果然超前——货币的非国有化,容我思量一下【转载+整理】
    2014年10月底/终于/HTML5定稿……/技术从来不会成为发展的绝对瓶颈/反而商业成了无法逾越的鸿沟【转载+整理】
  • 原文地址:https://www.cnblogs.com/zypblog/p/14018873.html
Copyright © 2020-2023  润新知