快速入门:在 Azure 容器应用中使用 Azure 应用程序配置
在本快速入门中,你将在 Azure 容器应用中运行的应用中使用Azure 应用程序配置。 这样,就可以在容器应用中集中存储和管理应用配置。 本快速入门将利用在快速入门:使用应用程序配置创建 ASP.NET Core 应用中创建的 ASP.NET Core 应用。 将该应用容器化,并将其部署到 Azure 容器应用。 请先完成该快速入门,再进行后续操作。
提示
在遵循本快速入门的同时,最好将所有新资源注册在一个资源组内,以便将它们重新组合在一个位置,以后如果不再需要它们,可以更快地将其删除。
先决条件
- 使用应用程序配置存储的应用程序。 如果没有实例,请使用快速入门:使用应用程序配置创建 ASP.NET Core应用来创建实例。
- Azure 容器应用实例。 如果没有实例,请使用 Azure 门户 或 CLI 创建实例。
- Docker Desktop
- Azure CLI
将 Azure 应用程序配置连接到容器应用
在 Azure 门户中导航到你的容器应用实例。 使用以下设置创建与应用程序配置存储连接的服务连接。
在“基本信息”选项卡中:
在“身份验证”选项卡中:
- 为“连接字符串的权限”选择“连接字符串”身份验证类型”和“只读”
- 展开“高级”菜单。 在配置信息中,应已创建名为“AZURE_APPCONFIGURATION_CONNECTIONSTRING”的环境变量。 通过选择右侧的图标编辑环境变量,并将名称更改为 ConnectionStrings__AppConfig。 我们需要进行此更改,因为 ConnectionStrings__AppConfig 是 ASP.NET Core快速入门中生成的应用程序将查找的环境变量的名称。 该环境变量包含应用程序配置连接字符串。 如果已使用其他应用程序来运用此快速入门,请使用对应的环境变量名称。 然后选择“完成”。
对其他所有内容使用默认值。
完成后,名为 ConnectionStrings__AppConfig 的环境变量将添加到容器应用的容器中。 它的值是对容器应用机密(即应用程序配置存储的连接字符串)的引用。
生成容器
运行 dotnet publish 命令,在版本模式下生成应用,并在“已发布”文件夹中创建资产。
dotnet publish -c Release -o published
在包含 .csproj 文件的目录中创建名为 Dockerfile 的文件,在文本编辑器中打开该文件,然后输入以下内容。 Dockerfile 是一个没有扩展名的文本文件,用于创建容器映像。
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS runtime WORKDIR /app COPY published/ ./ ENTRYPOINT ["dotnet", "TestAppConfig.dll"]
运行以下命令生成容器。
docker build --tag aspnetapp .
创建 Azure 容器注册表实例
创建 Azure 容器注册表 (ACR)。 ACR 可用于生成、存储和管理容器映像。
- 若要创建容器注册表,请按照 Azure 容器注册表快速入门的指导进行。
- 部署完成后,打开 ACR 实例,然后在左侧菜单中选择“设置 > 访问密钥”。
- 记录下此页面列出的“登录服务器”值。 在稍后的步骤中会使用此信息。
- 将“管理员用户”切换为“已启用”。 此选项用于使用管理员用户凭据将 ACR 连接到 Azure 容器应用。 或者,可以将其保留为禁用状态,并将容器应用配置为使用托管标识从注册表中拉取映像。
向 Azure 容器注册表推送映像
将 Docker 映像推送到之前创建的 ACR。
运行 az acr login 命令,登录此注册表。
az acr login --name myregistry
登录成功后,命令将返回
Login Succeeded
。使用 docker tag 来标记映像的相应详细信息。
docker tag aspnetapp myregistry.azurecr.cn/aspnetapp:v1
提示
若要查看现有 Docker 映像和标记的列表,请运行
docker image ls
。 在此方案中,应至少显示两个图像:aspnetapp
和myregistry.azurecr.cn/aspnetapp
。使用 docker push 将映像推送到容器注册表。 此示例将在 ACR 中创建 aspnetapp 存储库,其中包含
aspnetapp
映像。 在下面的示例中,将占位符<login-server
、<image-name>
和<tag>
替换为 ACR 的登录服务器值、映像名称和映像标记。方法:
docker push <login-server>/<image-name>:<tag>
示例:
docker push myregistry.azurecr.cn/aspnetapp:v1
在 Azure 门户中打开 Azure 容器注册表,并确认“存储库”下显示了新的存储库。
将容器映像添加到 Azure 容器应用
更新容器应用以从 ACR 加载容器映像。
在 Azure 门户中,打开 Azure 容器应用实例。
在左侧菜单的“应用程序”下,选择“容器”。
选择“编辑并部署”。
在“容器映像”下,单击现有容器映像的名称。
更新以下设置:
设置 建议值 说明 映像源 Azure 容器注册表 选择“Azure 容器注册表”作为映像源。 身份验证 管理员凭据 使用前面在容器注册表中启用的管理员用户凭据选项。 如果未启用管理员用户,但配置为使用托管标识,则需要在窗体中手动输入映像和标记。 注册表 myregistry.azurecr.cn 选择之前创建的 Azure 容器注册表。 映像 aspnetapp 选择之前创建并推送到 ACR 的 Docker 映像。 映像标记 v1 从列表中选择你的映像标记。 选择“保存”,然后选择“创建”,将更新部署到 Azure 容器应用。
浏览至 Azure 容器应用的 URL
在 Azure 门户的 Azure 容器应用实例中,访问“概述”选项卡并打开“应用程序 URL”。
Web 页面如下所示:
清理资源
如果不想继续使用本文中创建的资源,请删除此处创建的资源组以避免产生费用。
重要
删除资源组的操作不可逆。 将永久删除资源组以及其中的所有资源。 请确保不要意外删除错误的资源组或资源。 如果在包含要保留的其他资源的资源组中创建了本文的资源,请从相应的窗格中单独删除每个资源,而不是删除该资源组。
- 登录到 Azure 门户,然后选择“资源组”。
- 在“按名称筛选”框中,输入资源组的名称。
- 在结果列表中,选择资源组名称以查看概述。
- 选择“删除资源组”。
- 系统会要求确认是否删除资源组。 重新键入资源组的名称进行确认,然后选择“删除” 。
片刻之后,将会删除该资源组及其所有资源。
后续步骤
在本快速入门中,请执行以下操作:
- 已将 Azure 应用程序配置连接到 Azure 容器应用
- 已使用 Docker 从具有应用程序配置设置的 ASP.NET Core 应用生成容器映像
- 已创建 Azure 容器注册表实例
- 已将映像推送到 Azure 容器注册表实例
- 已将容器映像添加到 Azure 容器应用
- 已浏览至 Azure 容器应用实例的 URL,该实例通过你在应用程序配置存储中配置的设置进行了更新。
托管标识允许某个 Azure 资源访问另一个资源,而无需维护机密。 可以简化从容器应用到其他 Azure 资源的访问流程。 有关详细信息,请参阅如何使用托管标识访问应用程序配置和如何[使用托管标识访问容器注册表]。
若要了解如何配置 ASP.NET Core Web 应用以动态刷新配置设置,请继续学习下一个教程。