1. 程式人生 > 實用技巧 >基於 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

開發環境搭建

獲取專案原始碼

通過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