快速入门:在 Azure 容器应用中使用 Azure 应用程序配置

在本快速入门中,你将在 Azure 容器应用中运行的应用中使用Azure 应用程序配置。 这样,就可以在容器应用中集中存储和管理应用配置。 本快速入门将利用在快速入门:使用应用程序配置创建 ASP.NET Core 应用中创建的 ASP.NET Core 应用。 将该应用容器化,并将其部署到 Azure 容器应用。 请先完成该快速入门,再进行后续操作。

提示

在遵循本快速入门的同时,最好将所有新资源注册在一个资源组内,以便将它们重新组合在一个位置,以后如果不再需要它们,可以更快地将其删除。

先决条件


将 Azure 应用程序配置连接到容器应用

在 Azure 门户中导航到你的容器应用实例。 使用以下设置创建与应用程序配置存储连接的服务连接。

  • 在“基本信息”选项卡中:

    • 为“服务类型”选择“应用程序配置

    • 为“应用程序配置”选择应用程序配置存储

      Screenshot the Azure platform showing a form in the Service Connector menu in a Container App.

  • 在“身份验证”选项卡中:

    • 为“连接字符串的权限”选择“连接字符串”身份验证类型”和“只读
    • 展开“高级”菜单。 在配置信息中,应已创建名为“AZURE_APPCONFIGURATION_CONNECTIONSTRING”的环境变量。 通过选择右侧的图标编辑环境变量,并将名称更改为 ConnectionStrings__AppConfig。 我们需要进行此更改,因为 ConnectionStrings__AppConfigASP.NET Core快速入门中生成的应用程序将查找的环境变量的名称。 该环境变量包含应用程序配置连接字符串。 如果已使用其他应用程序来运用此快速入门,请使用对应的环境变量名称。 然后选择“完成”。
  • 对其他所有内容使用默认值。

完成后,名为 ConnectionStrings__AppConfig 的环境变量将添加到容器应用的容器中。 它的值是对容器应用机密(即应用程序配置存储的连接字符串)的引用。

生成容器

  1. 运行 dotnet publish 命令,在版本模式下生成应用,并在“已发布”文件夹中创建资产。

    dotnet publish -c Release -o published
    
  2. 在包含 .csproj 文件的目录中创建名为 Dockerfile 的文件,在文本编辑器中打开该文件,然后输入以下内容。 Dockerfile 是一个没有扩展名的文本文件,用于创建容器映像。

    FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS runtime
    WORKDIR /app
    COPY published/ ./
    ENTRYPOINT ["dotnet", "TestAppConfig.dll"]
    
  3. 运行以下命令生成容器。

    docker build --tag aspnetapp .
    

创建 Azure 容器注册表实例

创建 Azure 容器注册表 (ACR)。 ACR 可用于生成、存储和管理容器映像。

  1. 若要创建容器注册表,请按照 Azure 容器注册表快速入门的指导进行。
  2. 部署完成后,打开 ACR 实例,然后在左侧菜单中选择“设置 > 访问密钥”。
  3. 记录下此页面列出的“登录服务器”值。 在稍后的步骤中会使用此信息。
  4. 将“管理员用户”切换为“已启用”。 此选项用于使用管理员用户凭据将 ACR 连接到 Azure 容器应用。 或者,可以将其保留为禁用状态,并将容器应用配置为使用托管标识从注册表中拉取映像

向 Azure 容器注册表推送映像

将 Docker 映像推送到之前创建的 ACR。

  1. 运行 az acr login 命令,登录此注册表。

    az acr login --name myregistry
    

    登录成功后,命令将返回 Login Succeeded

  2. 使用 docker tag 来标记映像的相应详细信息。

    docker tag aspnetapp myregistry.azurecr.cn/aspnetapp:v1
    

    提示

    若要查看现有 Docker 映像和标记的列表,请运行 docker image ls。 在此方案中,应至少显示两个图像:aspnetappmyregistry.azurecr.cn/aspnetapp

  3. 使用 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
    
  4. 在 Azure 门户中打开 Azure 容器注册表,并确认“存储库”下显示了新的存储库。

    Screenshot of the Azure platform showing a repository in Azure Container Registries.

将容器映像添加到 Azure 容器应用

更新容器应用以从 ACR 加载容器映像。

  1. 在 Azure 门户中,打开 Azure 容器应用实例。

  2. 在左侧菜单的“应用程序”下,选择“容器”。

  3. 选择“编辑并部署”。

  4. 在“容器映像”下,单击现有容器映像的名称。

  5. 更新以下设置:

    设置 建议值 说明
    映像源 Azure 容器注册表 选择“Azure 容器注册表”作为映像源。
    身份验证 管理员凭据 使用前面在容器注册表中启用的管理员用户凭据选项。 如果未启用管理员用户,但配置为使用托管标识,则需要在窗体中手动输入映像和标记。
    注册表 myregistry.azurecr.cn 选择之前创建的 Azure 容器注册表。
    映像 aspnetapp 选择之前创建并推送到 ACR 的 Docker 映像。
    映像标记 v1 从列表中选择你的映像标记。
  6. 选择“保存”,然后选择“创建”,将更新部署到 Azure 容器应用。

浏览至 Azure 容器应用的 URL

在 Azure 门户的 Azure 容器应用实例中,访问“概述”选项卡并打开“应用程序 URL”。

Web 页面如下所示:

Screenshot of an internet browser displaying the app running.

清理资源

如果不想继续使用本文中创建的资源,请删除此处创建的资源组以避免产生费用。

重要

删除资源组的操作不可逆。 将永久删除资源组以及其中的所有资源。 请确保不要意外删除错误的资源组或资源。 如果在包含要保留的其他资源的资源组中创建了本文的资源,请从相应的窗格中单独删除每个资源,而不是删除该资源组。

  1. 登录到 Azure 门户,然后选择“资源组”。
  2. 在“按名称筛选”框中,输入资源组的名称
  3. 在结果列表中,选择资源组名称以查看概述。
  4. 选择“删除资源组”。
  5. 系统会要求确认是否删除资源组。 重新键入资源组的名称进行确认,然后选择“删除” 。

片刻之后,将会删除该资源组及其所有资源。

后续步骤

在本快速入门中,请执行以下操作:

  • 已将 Azure 应用程序配置连接到 Azure 容器应用
  • 已使用 Docker 从具有应用程序配置设置的 ASP.NET Core 应用生成容器映像
  • 已创建 Azure 容器注册表实例
  • 已将映像推送到 Azure 容器注册表实例
  • 已将容器映像添加到 Azure 容器应用
  • 已浏览至 Azure 容器应用实例的 URL,该实例通过你在应用程序配置存储中配置的设置进行了更新。

托管标识允许某个 Azure 资源访问另一个资源,而无需维护机密。 可以简化从容器应用到其他 Azure 资源的访问流程。 有关详细信息,请参阅如何使用托管标识访问应用程序配置和如何[使用托管标识访问容器注册表]。

若要了解如何配置 ASP.NET Core Web 应用以动态刷新配置设置,请继续学习下一个教程。