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