部署总览
更新: 2026-10-16 15:20:09 字数: 0 字 时长: 0 分钟
Aspire 的部署思路是:本地开发用的那份应用模型,就是部署时的输入。您不需要维护第二套架构描述。
两个命令
| 命令 | 作用 |
|---|---|
aspire publish | 把应用模型序列化为磁盘上的部署产物(Compose 文件、Helm Chart、清单等)。 |
aspire deploy | 执行部署流水线,把应用真正部署到目标环境。 |
aspire deploy 会先调用 publish 步骤,再执行部署动作。
bash
aspire publish # 只生成产物,不构建镜像
aspire deploy # 生成产物 + 部署
aspire destroy # 拆除此前部署的环境流水线(Pipeline)
Aspire 把发布与部署建模为流水线步骤:
| 步骤 | 说明 |
|---|---|
publish | 将资源序列化为部署产物。 |
deploy | 调用目标环境的部署逻辑。 |
| 依赖步骤 | 例如构建并推送镜像、准备环境。 |
可以用 aspire do <步骤> 执行某个步骤及其依赖,这在调试流水线时很有用:
bash
aspire do publish声明部署目标
部署目标通过环境资源声明。添加环境资源后,所有资源都会自动参与该目标的产物生成。
csharp
var builder = DistributedApplication.CreateBuilder(args);
builder.AddDockerComposeEnvironment("env");
builder.AddProject<Projects.Api>("api");
builder.Build().Run();csharp
var builder = DistributedApplication.CreateBuilder(args);
builder.AddKubernetesEnvironment("env");
builder.AddProject<Projects.Api>("api");
builder.Build().Run();csharp
var builder = DistributedApplication.CreateBuilder(args);
builder.AddAzureContainerAppEnvironment("env");
builder.AddProject<Projects.Api>("api");
builder.Build().Run();csharp
var builder = DistributedApplication.CreateBuilder(args);
builder.AddAzureAppServiceEnvironment("env");
builder.AddProject<Projects.Api>("api");
builder.Build().Run();可以同时声明多个目标
一个 AppHost 可以同时包含 Docker Compose 与 Kubernetes 环境,从而支持「本地用 Compose、生产用 K8s」两条交付路径。产物会分别生成。
支持的部署目标
| 目标 | 环境 API |
|---|---|
| Docker Compose | AddDockerComposeEnvironment(name) |
| Kubernetes / AKS | AddKubernetesEnvironment(name) |
| Azure Container Apps | AddAzureContainerAppEnvironment(name) |
| Azure App Service | AddAzureAppServiceEnvironment(name) |
| Radius | AddRadiusEnvironment(name) |
| 自定义 | 自行实现 publishing / deploying 步骤 |
本地开发与部署的差异
| 关注点 | Run 模式(本地) | Publish / Deploy 模式 |
|---|---|---|
| 容器资源 | 直接启动容器 | 映射为云服务或容器定义 |
| 连接字符串 | 注入本地地址 | 注入目标环境地址 |
| 端口 | 由 Aspire 代理分配 | 由目标平台负责 |
| 参数 | 从 appsettings.json / 机密读取 | 由部署平台提供的参数 / 机密填充 |
| 仪表板 | 本地仪表板 | 可选:部署一个仪表板实例(部分目标支持) |
正如应用模型与架构中提到的,builder.ExecutionContext 是区分两种模式的开关。
部署前检查
bash
aspire doctor # 检查环境(CLI、证书、容器运行时)
aspire publish # 先只生成产物,确认无误非交互环境务必加参数
CI/CD 中请使用 --non-interactive,并提前通过环境变量或机密存储提供所有参数值,否则流水线会卡在交互提示上。





