掌握excel线性回归技巧助力数据分析与决策优化
597
2022-05-29
目标
将ASP.NET Core Web API应用程序进行容器化并部署在华为的ModelArts平台
准备工作
• 安装 .NET Core SDK 2.0
• 安装一个喜欢的代码编辑器,例如 Visual Studio(Code)。
• 安装 Docker CE for Windows
Visual Studio Docker 工具集
为应用程序添加 Docker 支持
要使 ASP.NET 与 Docker 集成,该项目必须是 .NET Core 项目,Linux 和 Windows 两种类别的容器都支持。ASP.NET Core 项目的 Container 类型必须与本机 Docker 引擎运行的 Container 类型相同。可通过在任务栏图标上右键单击 Docker 图标 -> Switch to Windows containers 或 Switch to Linux containers 功能来进行切换。
创建新的应用程序
对于新创建的 ASP.NET Core 项目,勾选 Enable Docker Support,并选择一个 Docker Container 类型。
为现有项目添加 Docker 支持
Visual Studio 仅支持为 .NET Core 项目添加 Docker 支持,有两种方式,首先打开一个项目
选择 Project 菜单 -> Docker Support
右键单击项目 -> 添加 -> Docker Support
Visual Studio Docker 概览
当对一个项目添加 Docker 支持后,VisualStudio 将项解决方案目录添加一个 docker-compose.dcproj 项目,其中包含:
.dockerignore: 生成 build 时需要忽略的文件和目录匹配字段
docker-compose.yml: Docker Compose 的定义文件,定义了一系列 Image 的集合用于 docker-compose build 和 docker-compose run。
docker-compose.override.yml: 一个可选文件,也会被 Docker Compose 读取,包含需要对服务进行重写的配置信息。Visual Studio 执行docker-compose -f "docker-compose.yml" -f "docker-compose.override.yml" 来合并这些文件
同时,ASP.NET Core 项目文件夹下自动生成了一个名为 Dockerfile 的文件(注意这里是自动生成的),该文件起始包含 4 个单独的生成环节,其根据 Docker multi-stage build 定义,内容如下:
此处需要按照华为给定的示例文档将监听ip设置为 "0.0.0.0", 对外监听的端口设置为 8080,故需要对dockerfile文档进行修改:
调试
在 Debug 模式下按下 F5,同时查看 Visual Studio 的输出窗口,其步骤如下:
microsoft/aspnetcore: 获取 aspnet core runtime Image。
microsoft/aspnetcore-build: 获取编译/发布 Image。
ASPNETCORE_ENVIRONMENT: Container 内环境变量设置为 Development。
Container 暴露 8080 端口了并映射到了主机的动态端口,该动态端口由 Docker 主机决定,可通过 docker ps 来查询。
应用程序被复制到了 Container 中
默认浏览器被打开,并通过动态端口将调试器附加到了 Container 中。
完成后执行docker images可以看到生成好的Image。
执行docker ps可以看到正在运行的 container。
编辑并继续
与传统 .NET 程序的调试一样,针对静态文件和 Razor 视图的更改都将实时更新,而无需重新编译,但针对源代码的修改,则需要重新编译并重启 Kestrel 服务器,这都在 Container 中完成。
发布 Docker Image
一旦开发和调试完成,需要首先将配置切换至 Release,然后生成应用程序,Docker 工具集会生成一个新的打上 latest 标签的 Image,最后可将该 Image 上传至私有仓库或 Docker Hub。
在本地验证
从dockerhub上拉取并验证镜像
这里在windows下是使用postman进行的测试(测试过程略),测试接口功能正常之后,按照说明文档将镜像上传部署即可。
部署成功后在页面点击预测对接口进行测试:
在“预测”界面能正常调用,说明服务部署成功。
至此,模型容器化改造及部署工作结束,用户可以用API开心的调用我们的模型了。
参考教程
使用自定义镜像创建AI应用: https://support.huaweicloud.com/bestpractice-modelarts/modelarts_10_0072.html
为NET Core 应用程序添加 Docker 支持:https://blog.frosthe.net/aspnetcore-host-in-docker-containers/
ASP.NET应用程序容器化:https://sunnycoding.cn/2018/10/07/dockerize-aspnetcore-cicd-with-azure-devops-and-kubernetes-part1/
为防止参考链接失效,打印版放在了附件栏。
附件: ASP.NET Core应用程序容器化.pdf 1.40MB 下载次数:0次
附件: 为ASP.NET Core应用程序添加Docker支持 .pdf 0B 下载次数:0次
ASP.NET 容器
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。