如何使用ASP.NET技术构建一个容器并发布成ModelArts在线服务

网友投稿 597 2022-05-29

目标

将ASP.NET Core Web API应用程序进行容器化并部署在华为的ModelArts平台

准备工作

• 安装 .NET Core SDK 2.0

• 安装一个喜欢的代码编辑器,例如 Visual Studio(Code)。

如何使用ASP.NET技术构建一个容器并发布成ModelArts在线服务

• 安装 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小时内删除侵权内容。

上一篇:全面拥抱 FastApi — 多应用程序管理蓝图APIRouter
下一篇:VirtualBox Network设置的NAT和Bridged Adapter模式区别
相关文章