首先创建一个ASP.NET Web应用程序,如下图所示:
接下来,选择ASP.NET预览版应用模板,此模板会通过NuGet下载项目所需引用的跨平台库DNX,打包配置工具NPM, Bower等,(*注意此时不要勾选部署到Web App中),如下图所示:
项目建好之后,我们就可以尝试发布了:)选择发布应用,如下图所示:
在扩展工具安装之后,我们可以此时看到Docker Container选项,当然这里我们要选择通过容器方式发布,选择它,如下图所示:
接下来,如果我们在Azure上没有Docker虚拟机环境,我们可以选择创建新的Azure Docker虚拟机(这里可是坑了我很长时间,希望看了上面预装环境,大家不会碰到类似问题),如下图所示:
这里可以根据实际Azure环境选择订阅,位置,映像文件(这里选择的是最新的Windows Server 2016 TP3的Windows内核容器环境),尺寸,虚拟机用户凭据等,注意如果之前没有在当前用户环境创建过证书文件,扩展工具内置的PowerShell脚本会检测到并帮助你创建用于Docker环境TLS管理的证书文件到该目录下,并且这样通过Docker工具或脚本连接资源时,就可以通过默认证书配置连接了。(*注意,目前此功能只能支持国际版的Azure环境,对于国内Azure版本我们还需要耐心等待),如下图所示:
我们选择完成之后,其实可以从当前Web工程中看到扩展工具为我们生成的构建Docker虚拟机资源组的配置文件*.json,及默认参数配置文件*.param.dev.json;另外还会生成证书文件创建及应用Docker虚拟机模板创建Docker虚拟机环境的脚本文件,如下图所示:
开始创建虚拟机资源组,泡杯咖啡耐心等待,直到虚拟机创建成功等待我们部署我们的Web应用,如下图所示:
我们可以通过PowerShell验证一下是否资源已经创建好了。
接下来,我们可以在此虚拟机上部署我们的测试Web应用了,再次选择发布选项;此时如果Dockfile部分没有文件,没有关系,扩展工具会帮助我们创建用户创建基础Docker映像的Dockfile;点击Validate Connection确认此时已经可以连接到Azure上的Docker虚拟机环境,如下图所示:
选择发布后,扩展工具会通过gulp/Grunt,DNU.CMD打包Web应用程序,并通过Dockfile和Docker命令行工具创建映像文件;之后通过映像文件创建容器并按照我们在上一步制定的映射端口映射容器到外部,测试中发现其实包括Azure外部的端点Endpoint映射也帮我们做好了,还真是事半功倍,如下图所示:
全部部署完成之后,我们可以点击output中的应用URL访问网站并验证是否ASP.NET应用已经部署成功,如下图所示:
此时如果愿意,也可以在测试机上连接Azure上的Docker环境并查看容器运行时环境,如下图所示: