ABP VNext + Tye:本地微服务编排与调试 🚀
TL;DR ✨
- 🚀 一键编排:ABP VNext 微服务 + SQL Server、Redis、RabbitMQ、Jaeger,
tye run --env …即可全量本地启动 - 💪 高可用 & 性能:双保险健康检查、资源
requests/limits、多副本、死信队列与自动重试 - 🔍 全链路可观测:HTTP/gRPC/EF Core Trace → Jaeger UI → Tye Dashboard
一、环境与依赖 🛠️
-
必备工具
-
.NET 6+ SDK
-
ABP VNext 6.x(
Volo.Abp.*系列) -
Microsoft Tye CLI
dotnet tool install -g Microsoft.Tye --version "0.12.0-alpha.*" -
Docker Desktop(含 SQL Server、Redis、RabbitMQ、Jaeger 镜像)
-
-
容器镜像
- SQL Server 2022:
mcr.microsoft.com/mssql/server:2022-latest - Redis 7:
redis:7 - RabbitMQ 3-management:
rabbitmq:3-management - Jaeger All-in-One:
jaegertracing/all-in-one:1.49
- SQL Server 2022:
-
项目结构
abp-tye-demo/ ├─ services/ │ ├─ IdentityService/ │ ├─ OrderService/ │ └─ ProductService/ ├─ tye.yaml ├─ tye.development.yaml ├─ tye.production.yaml ├─ docker-compose.override.yml └─ README.md
二、核心配置详解 🚀
1. 主配置 tye.yaml
name: abp-tye-demo
secrets:
- name: Jwt__Key
services:
# —— 外部依赖 ——
- name: sql
dockerCompose:
file: docker-compose.override.yml
- name: redis
dockerCompose:
file: docker-compose.override.yml
- name: rabbitmq
dockerCompose:
file: docker-compose.override.yml
- name: jaeger
dockerCompose:
file: docker-compose.override.yml
# —— ABP 微服务 ——
- name: identity
project: services/IdentityService/IdentityService.csproj
bindings:
- port: 5001
env:
ConnectionStrings__Default: "Server=sql;User Id=sa;Password=Your_password123;"
Redis__Configuration: "redis:6379"
RabbitMQ__HostName: "rabbitmq"
RabbitMQ__User: "tye"
RabbitMQ__Pass: "tyePass123"
Jaeger__AgentHost: "jaeger"
Jaeger__AgentPort: "6831"
Jwt__Key: "Jwt__Key"
- name: order
project: services/OrderService/OrderService.csproj
bindings:
- port: 5002
env:
ConnectionStrings__Default: "Server=sql;User Id=sa;Password=Your_password123;"
Redis__Configuration: "redis:6379"
RabbitMQ__HostName: "rabbitmq"
RabbitMQ__User: "tye"
RabbitMQ__Pass: "tyePass123"
Jaeger__AgentHost: "jaeger"
Jaeger__AgentPort: "6831"
- name: product
project: services/ProductService/ProductService.csproj
bindings:
- port: 5003
env:
ConnectionStrings__Default: "Server=sql;User Id=sa;Password=Your_password123;"
Redis__Configuration: "redis:6379"
RabbitMQ__HostName: "rabbitmq"
RabbitMQ__User: "tye"
RabbitMQ__Pass: "tyePass123"
Jaeger__AgentHost: "jaeger"
Jaeger__AgentPort: "6831"
- 多环境自动合并:
tye run --env development|production会加载对应文件 - Secrets:通过
tye secret set Jwt__Key ...注入 - RabbitMQ 用户:
guest仅限本地,容器间需自定义用户
三、多环境文件 🌱🌳
tye.development.yaml
services:
- name: identity
replicas: 1
- name: order
replicas: 1
- name: product
replicas: 1
tye.production.yaml
services:
- name: identity
replicas: 2
resources:
requests:
cpu: "0.25"
memory: "256Mi"
limits:
cpu: "0.5"
memory: "512Mi"
- name: order
replicas: 2
resources:
requests:
cpu: "0.25"
memory: "256Mi"
limits:
cpu: "0.5"
memory: "512Mi"
- name: product
replicas: 2
resources:
requests:
cpu: "0.25"
memory: "256Mi"
limits:
cpu: "0.5"
memory: "512Mi"
四、依赖容器定义 🐳
version: '3.4'
services:
sql:
image: mcr.microsoft.com/mssql/server:2022-latest
environment:
SA_PASSWORD: "Your_password123"
ACCEPT_EULA: "Y"
ports:
- "1433:1433"
volumes:
- ./mssql-data:/var/opt/mssql
healthcheck:
test: ["CMD", "sh", "-c", "if nc -z localhost 1433; then exit 0; else exit 1; fi"]
interval: 10s
retries: 5
redis:
image: redis:7
ports:
- "6379:6379"
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
retries: 5
rabbitmq:
image: rabbitmq:3-management
environment:
RABBITMQ_DEFAULT_USER: "tye"
RABBITMQ_DEFAULT_PASS: "tyePass123"
ports:
- "5672:5672" # AMQP
- "15672:15672" # Management UI
healthcheck:
test: ["CMD", "rabbitmq-diagnostics", "ping"]
interval: 10s
retries: 5
jaeger:
image: jaegertracing/all-in-one:1.49
ports:

最低0.47元/天 解锁文章
366

被折叠的 条评论
为什么被折叠?



