aspire deploy CLI 命令提供了一种简化的方法,用于将应用程序直接部署到 AspireAzure Container Apps 。 此命令自动执行整个部署过程,从生成容器映像到预配 Azure 基础结构和部署应用程序。 本文逐步讲解如何使用 aspire deploy 命令将 Aspire 解决方案部署到容器应用。 你将了解如何完成以下任务:
- 使用
aspire deploy命令部署到容器应用。 - 验证 Azure 用于部署的 CLI 身份验证。
- 使用 Bicep 模板配置Azure基础结构。
- 生成容器映像并将其推送到 Azure 容器注册表。
- 将计算资源部署到容器应用。
- 监视部署进度并访问已部署的应用程序。
先决条件
若要使用 Aspire,需要在本地安装以下各项:
-
.NET 8.0 或 .NET 9.0。
- 从 Aspire 9.4 开始,支持 .NET 10 Preview 5 或更高版本。
- 符合 OCI 的容器运行时环境,例如:
- 集成开发人员环境(IDE)或代码编辑器,例如:
- Visual Studio 2022 17.9 或更高版本(可选)
-
Visual Studio Code (可选)
- C# Dev Kit:扩展(可选)
- JetBrains Rider 与 Aspire 插件 (可选)
有关详细信息,请参阅 Aspire 设置和工具以及 Aspire SDK。
使用 aspire deploy 命令之前,请确保具有以下各项:
- Azure CLI:安装并使用 Azure 帐户进行身份验证。
- Docker:已安装用于生成容器映像。
- Azure 订阅:具有创建资源的相应权限。
启用 deploy 命令
该 aspire deploy 命令当前处于预览状态,默认情况下处于禁用状态。 若要启用:
aspire config set features.deployCommandEnabled true
使用 Azure 进行身份验证
在部署之前,必须使用 CLI 进行身份验证 Azure 。 运行下面的命令:
az login
此命令将打开 Web 浏览器,以便使用 Azure 凭据登录。 在继续部署之前,该 aspire deploy 命令会自动验证 Azure CLI 身份验证。 有关详细信息,请参见:
创建 Aspire 项目
作为起点,本文假定你已从Aspire模板创建项目。 有关详细信息,请参阅快速入门:生成第一个项目Aspire。
若要配置项目以进行Azure Container Apps部署,请在您的 AppHost 项目中添加一个包含📦Aspire.Hosting.Azure.AppContainers NuGet 包的包引用:
<Project Sdk="Microsoft.NET.Sdk">
<Sdk Name="Aspire.AppHost.Sdk" Version="9.5.2" />
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<UserSecretsId>7b352f08-305b-4032-9a21-90deb02efc04</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Aspire.Hosting.AppHost" Version="9.5.2" />
<PackageReference Include="Aspire.Hosting.Azure.AppContainers" Version="9.5.2" />
</ItemGroup>
</Project>
在 AppHost 项目的 AppHost.cs 文件中,添加容器应用环境:
var builder = DistributedApplication.CreateBuilder(args);
// Add Azure Container Apps environment
var containerAppEnv = builder.AddAzureContainerAppEnvironment("aspire-env");
// Add your services
var cache = builder.AddRedis("cache");
var apiService = builder.AddProject<Projects.AspireApp_ApiService>("apiservice")
.WithExternalHttpEndpoints();
builder.AddProject<Projects.AspireApp_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithReference(cache)
.WithReference(apiService);
builder.Build().Run();
如需更多信息,请参阅配置Azure Container Apps环境。
资源命名
创建新 Azure 资源时,必须遵循命名要求。 对于 Azure Container Apps,名称长度必须为 2-32 个字符,由小写字母、数字和连字符组成。 名称必须以字母开头,以字母数字字符结尾。
有关详细信息,请参阅资源的命名规则和限制Azure。
使用 aspire 部署
配置项目后,请使用 aspire deploy 以下命令部署它:
aspire deploy
小窍门
默认情况下,该 aspire deploy 命令是交互式的。 若要在不出现提示的情况下部署,请先设置以下环境变量:
-
Azure__SubscriptionId:目标 Azure 订阅 ID。 -
Azure__Location: Azure region(例如,eastus)。 -
Azure__ResourceGroup:要创建或重复使用的资源组名称。
还可以指定其他选项:
aspire deploy --project ./MyApp.AppHost/MyApp.AppHost.csproj
部署过程
该 aspire deploy 命令自动执行以下步骤。 首先,该命令会验证你是否使用 Azure CLI 进行身份验证。 如果未登录,将看到一条错误消息,提示你运行 az login。
接下来, Aspire 提示你输入部署应面向的 Azure 订阅、位置和资源组名称。 可访问的订阅和位置取决于 Azure 通过上述步骤通过 CLI 进行身份验证的 Azure 帐户。
接下来, Aspire 分析应用程序模型,并提示输入未设置值的任何必需部署参数。 你将看到如下所示的提示:
There are unresolved parameters that need to be set. Please provide values for them. [y/n] (n): y
Please provide values for the unresolved parameters. Parameters can be saved to user secrets for future use.
weatherApiKey:
Save to user secrets: [y/n] (n): n
注释
CLI 将持续提示,直到所有未解析的参数都随值一起提供。 部署 Azure 处于预览状态时,CLI 将提示将值保存在用户机密中,但不使用这些值,因为 不支持部署状态。
收集参数后, Azure 使用 Bicep 模板预配基础结构。 此步骤创建必要的 Azure 资源,包括容器应用环境、容器注册表和任何支持服务(如 Redis 缓存):
Step 3: Deploying Azure resources
✓ DONE: Deploying aca-env 00:01:08
Successfully provisioned aca-env
✓ DONE: Deploying storage 00:00:04
Successfully provisioned storage
✓ DONE: Deploying cosmosdb 00:01:08
Successfully provisioned cosmosdb
✓ DONE: Deploying apiservice-identity 00:00:03
Successfully provisioned apiservice-identity
✓ DONE: Deploying apiservice-roles-storage 00:00:11
Successfully provisioned apiservice-roles-storage
✓ DONE: Deploying apiservice-roles-cosmosdb 00:01:10
Successfully provisioned apiservice-roles-cosmosdb
基础结构配置后,应用程序项目将生成为容器映像并推送到 Azure 容器注册表。
Step 4: Building container images for resources
✓ DONE: Checking Docker health 00:00:00
Docker is healthy.
✓ DONE: Building image: apiservice 00:00:04
Building image for apiservice completed
✓ DONE: Building image: webfrontend 00:00:05
Building image for webfrontend completed
✅ COMPLETED: Building container images completed
Step 5: Authenticating to container registries
✓ DONE: Logging in to acrname 00:00:08
Successfully logged in to acrname
✅ COMPLETED: Successfully authenticated to 1 container registries
Step 6: Pushing 2 images to container registries
✓ DONE: Pushing apiservice to acrname 00:00:04
Successfully pushed apiservice to acrname.azurecr.io/apiservice:aspire-deploy-20250922203320
✓ DONE: Pushing webfrontend to acrname 00:00:04
Successfully pushed webfrontend to acrname.azurecr.io/webfrontend:aspire-deploy-20250922203320
✅ COMPLETED: Successfully pushed 2 images to container registries
最后,从上一步生成为容器映像的所有 .NET 项目将推送到预配的 Azure 容器注册表,这些项目将位于其中,使其可供容器应用使用:
Step 7: Deploying compute resources
✓ DONE: Deploying apiservice 00:00:35
Successfully deployed apiservice to https://apiservice.proudplant-5c457a5d.westus2.azurecontainerapps.io
✓ DONE: Deploying webfrontend 00:00:19
Successfully deployed webfrontend to https://webfrontend.proudplant-5c457a5d.westus2.azurecontainerapps.io
✅ COMPLETED: Successfully deployed 2 compute resources
成功部署后,你将看到 Aspire 仪表板 URL,可在其中监视和管理已部署的应用程序:
✅ Deployment completed successfully. View Aspire dashboard at https://aspire-env.proudwater-12345678.eastus.azurecontainerapps.io
有关命令上 aspire deploy 提供的选项以及如何在 CLI 上提供这些选项的示例的详细信息,请参阅 aspire deploy 命令参考。
监视部署
在部署期间,可以通过以下过程监视进度:
- 控制台输出:实时进度更新和状态消息。
- Azure 门户:查看在资源组中创建的资源。
-
Azure CLI:用于
az containerapp list查看已部署的应用程序。
部署故障排除
使用命令 aspire deploy 时,可能会在部署过程中遇到各种问题。 使用此部分可了解常见问题,我们为你提供故障排除提示,帮助你快速识别和修复错误。 通过正确的方法和对常见问题的理解,可以确保部署过程更加顺利。
身份验证问题
如果遇到身份验证错误:
❌ Azure CLI authentication failed. Please run 'az login' to authenticate before deploying.
运行 az login 并确保在您的 Azure 订阅中拥有必要的权限。 有关详细信息,请参阅 使用 Azure CLI 登录。
资源命名冲突
如果资源名称与现有 Azure 资源冲突,请在 AppHost 中修改资源名称:
var containerAppEnv = builder.AddAzureContainerAppEnvironment(
"my-unique-env-name"
);
容器生成失败
如果容器生成失败,请确保:
- Docker 正在运行且可访问。
- 项目在本地成功构建:
dotnet build。 - 容器运行时已正确配置。
访问已部署的应用程序
成功部署后:
Aspire 仪表板:访问部署输出中提供的仪表板 URL。
应用程序终结点:在 Azure 容器应用下的门户中查找应用程序 URL。
Azure CLI:使用以下命令列出端点:
az containerapp show --name <app-name> --resource-group <resource-group> --query properties.configuration.ingress.fqdn
清理资源
若要删除已部署的资源,请删除资源组:
az group delete --name <resource-group-name>