基於 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