Skip to content

部署总览 ​

更新: 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 ComposeAddDockerComposeEnvironment(name)
Kubernetes / AKSAddKubernetesEnvironment(name)
Azure Container AppsAddAzureContainerAppEnvironment(name)
Azure App ServiceAddAzureAppServiceEnvironment(name)
RadiusAddRadiusEnvironment(name)
自定义自行实现 publishing / deploying 步骤

本地开发与部署的差异 ​

关注点Run 模式(本地)Publish / Deploy 模式
容器资源直接启动容器映射为云服务或容器定义
连接字符串注入本地地址注入目标环境地址
端口由 Aspire 代理分配由目标平台负责
参数从 appsettings.json / 机密读取由部署平台提供的参数 / 机密填充
仪表板本地仪表板可选:部署一个仪表板实例(部分目标支持)

正如应用模型与架构中提到的,builder.ExecutionContext 是区分两种模式的开关。

部署前检查 ​

bash
aspire doctor       # 检查环境(CLI、证书、容器运行时)
aspire publish      # 先只生成产物,确认无误

非交互环境务必加参数

CI/CD 中请使用 --non-interactive,并提前通过环境变量或机密存储提供所有参数值,否则流水线会卡在交互提示上。

下一步 ​

你觉得这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度