本快速入门介绍如何从 Visual Studio 将 Windows 映像中的 ASP.NET 应用部署到 Azure 容器注册表 。 你将在 Azure 应用服务中的某个自定义容器内运行该应用。
Azure 应用服务 在 Windows 上提供在 Internet Information Services(IIS)上运行的预定义应用程序堆栈。 这些预配置的应用程序堆栈 会锁定作系统并防止低级别访问。
自定义 Windows 容器没有这些限制。 开发人员可以使用自定义容器为容器化应用程序提供对 Windows 功能的完全访问权限。
Prerequisites
安装适用于 Windows 的 Docker Desktop。
切换 Docker 以运行 Windows 容器。
安装 Visual Studio 2022,其中包含 ASP.NET 和 Web 开发以及 Azure 开发工作负载。 在 Visual Studio 2022 Community 中,确保选择具有 ASP.NET 和 Web 开发工作负载的 .NET Framework 项目和项模板组件。
如果已安装 Visual Studio 2022:
通过选择“帮助”>“检查更新”,在 Visual Studio 中安装最新更新。
在 Visual Studio 中,通过选择“工具”>“获取工具和功能”,添加工作负载。
创建 ASP.NET Web 应用
打开 Visual Studio,然后选择“创建新项目”。
在“创建新项目”中,选择 C#然后选择“下一步”。
在 “配置新项目项目>名称”中,将应用程序 myfirstazurewebapp命名。 在 Framework 下,选择 .NET Framework 4.8,然后选择“ 创建”。
可将任何类型的 ASP.NET Web 应用部署到 Azure。 对于本快速入门,请选择 MVC 模板。
在“身份验证”下选择“无”。 在 “高级”下,选择 “容器支持 ”并清除 “配置 HTTPS”。 选择“创建”。
如果 Dockerfile 未自动打开,请通过选择 解决方案资源管理器将其打开。
需要使用受支持的父映像。 通过用以下代码替换 FROM 行来更改父映像,然后保存文件:
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
在 Visual Studio 菜单中,选择“调试”“开始执行(不调试)”以在本地运行 Web 应用。>
发布到 Azure 容器注册表
在 解决方案资源管理器中,右键单击 myfirstazurewebapp 该项目,然后选择“ 发布”。
在“目标”中,选择“Docker 容器注册表”,然后选择“下一步”。
在“特定目标”中,选择“Azure 容器注册表”,然后选择“下一步”。
在 “发布”中,选择正确的订阅。 若要创建新的容器注册表,请选择“在容器注册表中创建新”。
在“新建”中,选择正确的订阅。 在 “资源组”下,选择“ 新建 ”并键入 myResourceGroup 名称。 然后,选择“确定”。 在“SKU”下,请选择“基本”。 在 “注册表位置”下,选择注册表的位置,然后选择“ 创建”。
在 “发布”中,在 “容器注册表”下,选择创建的注册表,然后选择“ 完成”。
等待部署完成。 “ 发布 ”窗格现在显示存储库名称。 选择“ 复制 ”按钮,复制 存储库 名称供以后使用。
创建 Windows 自定义容器
登录 Azure 门户。
在 Azure 门户的左上角选择“ 创建资源 ”。
在“常用服务”下,选择“Web 应用”下的“创建”。
在 “创建 Web 应用”中,选择订阅和资源组。 如果需要,可以创建新的资源组。
提供应用名称,例如 win-container-demo。 在“发布”中,选择“容器”。 对于“操作系统”,请选择“Windows”。
选择 “下一步:数据库>下一步:容器”。
对于 映像源,请选择 “其他容器注册表”。 对于 映像和标记,请输入之前在 “发布到 Azure 容器注册表”中复制的存储库名称。
如果在其他位置(例如 Azure 容器注册表 或任何其他专用存储库)中为 Web 应用提供了自定义映像,则可以在此处对其进行配置。 选择 审阅 + 创建。
验证所有详细信息,然后选择“ 创建”。
等待 Azure 创建所需的资源。
浏览到自定义容器
操作完成后,Azure 门户会显示通知。
选择“转到资源”。
在概述中,点击默认域旁边的链接。
此时会打开新的浏览器页面。
请等候几分钟,然后重试。 继续尝试,直到获得默认 ASP.NET 主页。
查看容器启动日志
加载 Windows 容器可能需要一些时间。 要查看进度,请将 \
https://
流式传输的日志如下所示:
2018-07-27T12:03:11 Welcome, you are now connected to log-streaming service.
27/07/2018 12:04:10.978 INFO - Site: win-container-demo - Start container succeeded. Container: facbf6cb214de86e58557a6d073396f640bbe2fdec88f8368695c8d1331fc94b
27/07/2018 12:04:16.767 INFO - Site: win-container-demo - Container start complete
27/07/2018 12:05:05.017 INFO - Site: win-container-demo - Container start complete
27/07/2018 12:05:05.020 INFO - Site: win-container-demo - Container started successfully
在本地更新并重新部署
在 Visual Studio 中,转到 解决方案资源管理器。 选择 Views>Home>Index.cshtml。
在顶部附近找到
ASP.NET in Azure!
This is a simple app that we've built that demonstrates how to deploy a .NET app to Azure App Service.
若要重新部署到 Azure,请在解决方案资源管理器中右键单击 myfirstazurewebapp 项目,然后选择“发布”。
在发布窗格中,选择“ 发布 ”并等待发布完成。
若要指示应用服务从 Docker 中心拉取新映像,请重启应用。 在 Azure 门户的应用窗格中,选择“ 重启>是”。
重新访问自定义容器。 刷新页面时,应用应首先还原到 “开始 ”页面。 然后,它应显示更新的页面。
清理资源
在前面的步骤中,你在资源组中创建了 Azure 资源。 如果预计将来不需要这些资源,可以通过删除资源组来删除它们:
在 Azure 门户菜单或主页中,选择 “资源组>myResourceGroup”。
请在myResourceGroup窗格中确认,列出的资源是否是您想要删除的。
选择“删除资源组”。 在文本框中键入 myResourceGroup 以确认,然后选择“ 删除”。
相关内容
配置自定义容器
为应用服务和 Azure Functions 使用托管标识
Azure Monitor 概述
监视 Azure 应用服务
使用自定义域和证书进行保护
将应用与 Azure 虚拟网络集成
对应用服务应用使用专用终结点
将 Azure 容器注册表与 Azure 专用链接配合使用
迁移到 Azure 中的 Windows 容器
使用 Azure Pipelines 部署容器
使用 GitHub Actions 部署容器