在阿里云上运行ASP.NET Docker应用
微软的.NET开源后可以运行在Mac和Linux平台,也支持运行在Docker容器里。我们今天要尝试的是在Mac上开发一个.NET应用,并且把它用Docker跑起来,然后部署到阿里云容器服务上。
本文的后续文章介绍了如何访问SQLServer数据库,点击[在Docker中运行SQLServer ASP.NET应用]。(https://yq.aliyun.com/articles/60857)
在Mac上安装.NET Core按照微软的官方文档,我们可以非常容易地在Mac上安装.NET Core。
安装openssl在Mac上安装.NET Core需要先安装openssl。
brew update brew install openssl brew link --force openssl安装 .NET Core SDK
下载.NET Core SDK官方安装包,按照提示安装即可。
可选: 安装 Visual Studio Code这步不是必须的,你可以用自己喜欢的编辑器写.NET代码。和Visual Studio不同,Visual Studio Code是一个跨平台的代码编辑器,还有调试能力,如果你想尝试一下新的体验,可以下载Visual Studio Code。解开压缩包后把应用拷贝到系统Application目录下。
编译,运行,并构建Docker镜像 本地运行Hello World使用dotnet命令行可以创建.NET HelloWorld程序。dotnet restore是将所有依赖信息恢复出来。
$ dotnet new $ dotnet restore
运行新生成的程序
$ dotnet run Project dotnet-hello (.NETCoreApp,Version=v1.0) will be compiled because expected outputs are missing Compiling dotnet-hello for .NETCoreApp,Version=v1.0 Compilation succeeded. 0 Warning(s) 0 Error(s) Time elapsed 00:00:01.2329439
运行ASP.NET应用为了部署到云上,我们需要一个Web应用。按照ASP.NET官方入门文档的步骤可以创建一个Web应用。
不愿意自己敲字的同学可以从这里复制代码:
https://code.aliyun.com/libin.libin/dotnet-helloworld$dotnet restore $dotnet run Project dotnet-helloworld (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation. Hosting environment: Production Content root path: /Users/****/netcoreapp1.0 Now listening on: http://*:5000 Application started. Press Ctrl+C to shut down.启动浏览器访问http://localhost:5000可以看到输出了:
构建Docker镜像首先看看例子目录下都有哪些文件:
$ tree ├── Dockerfile ├── Program.cs ├── README.md ├── Startup.cs ├── build.sh ├── docker-compose.yml ├── project.json └── project.lock.json 0 directories, 8 filesDockerfile用来生成Docker镜像,内容如下:
FROM microsoft/dotnet:latest COPY bin/Debug/netcoreapp1.0/publish/ /root/ EXPOSE 5000/tcp ENTRYPOINT dotnet /root/helloworld.dll基础镜像为微软的官方镜像,另外bin/Debug/netcoreapp1.0/publish/由dotnet publish命令生成。要生成Docker镜像需要执行如下命令:
dotnet publish docker build -t dotnet-helloworld .上传到阿里云容器Hub,记得先在其中的 name 替换成自己的名字。
docker tag dotnet-helloworld registry.aliyuncs.com/ name /dotnet-helloworld docker push registry.aliyuncs.com/ name /dotnet-helloworld本地Docker运行Web应用本地运行Docker应用的命令如下:
$ docker run -it -p 5000:5000 dotnet-helloworld Hosting environment: Production Content root path: /root Now listening on: http://*:5000 Application started. Press Ctrl+C to shut down.如果你按照官方文档,会发现应用仅侦听localhost,造成浏览器访问不了。可以在代码中指定应用侦听所有地址。
public static void Main(string[] args) var host = new WebHostBuilder() .UseKestrel() //侦听所有地址 .UseUrls("http://*:5000") .UseStartup Startup () .Build(); host.Run(); }将应用部署到阿里云容器服务还记得例子目录下有个docker-compose.yml文件吗?
dotnet-helloworld: image: registry.aliyuncs.com/ name /dotnet-helloworld:latest labels: aliyun.scale: 1 aliyun.routing.port_5000: http://helloworld restart: always把上面内容中 name 替换为自己的名字,在集群里创建应用时,选择使用编排模版创建:
在模版编辑器中粘贴docker-compose.yml文件内容,然后点击创建并部署:
应用创建成功后进入服务页面,发现服务的访问端点已经自动生成了:
点击访问端点,启动浏览器可以看到ASP.NET的输出了:
微软的开源和对非Windows的支持力度越来越大,在Docker上运行.NET应用使得原来的Windows开发者也可以享受容器技术带来的诸多好处。访问阿里云容器服务 开始你的Docker之旅吧。
更安全更稳定,阿里云斩获多项云系统稳定安全运行优秀案例 近日,阿里云凭借在稳定性领域的全栈投入,获评中国信通院混沌工程实验室 2022 年度杰出贡献企业,并斩获“云系统稳定安全运行优秀案例”活动中多领域优秀案例。阿里云持续推动企业 IT 系统建设,保障千行百业安全稳定的实现数字化转型与创新。
阿里云白嫖学生服务器30元2核2G运行内存14天 服务器使用尽量选你所在地区或者附近这样延迟就低很多,推荐使用ubuntu22.06或者最新系统,如果是开发游戏就得选高配置独立服务器了,最好延迟低,网速越高越好,还要处理器是目前最好的服务器处理器,ddr5运行内存,固态5.0硬盘,Ubuntu系统得注意有没有开防火墙,大多数打不开就是你防火墙没有开。
阿里云PAI DLC实例运行LeNet Sample PAI-DLC(Deep Learning Containers)是基于阿里巴巴容器服务ACK(Alibaba Cloud Container Service for Kubernetes)的深度学习训练平台,为您提供灵活、稳定、易用和极致性能的深度学习训练环境。本文主要演示如何在PAI DLC上面运行LeNet Sample。
阿里云DSW实例运行LeNet Sample LeNet,它是最早发布的卷积神经网络之一,因其在计算机视觉任务中的高效性能而受到广泛关注。 这个模型是由AT&T贝尔实验室的研究员Yann LeCun在1989年提出的(并以其命名),目的是识别图像中的手写数字。本文主要演示在阿里云PAI DSW实例中使用GPU资源运行LetNet网络。
libinjingshan 李斌,目前负责阿里云容器服务解决方案的研发工作。加入阿里之前,李斌曾在IBM工作,专注于企业软件开发,DevOps,微服务和Docker实践。
相关文章
- VB.NET数据库编程基础教程
- [VB.NET]圖片透明化[通俗易懂]
- [.NET控件]Telerik RadControls for ASP.NET AJAX 2008 Q1 net 2.0 Web.UI「建议收藏」
- Docker部署_docker部署网站
- .Net Core3.1 SignalR for WPF Asp.net
- Docker删除容器命令(docker rm)
- 【Docker 系列】docker 学习九,Compose 内容编排官网初步体验
- springboot整合docker部署(两种构建Docker镜像方式)详解编程语言
- Docker容器上Spring Cloud微服务相互调用时报错:java.net.UnknownHostException:主机名详解编程语言
- .netLinux下部署ASP.NET环境指南(linux部署asp)
- 利用Oracle.Net实现数据库互联(oracle.net)
- MongoDB 使用.NET开发充分利用数据库性能(mongodb.net)
- .net让Oracle与ASP.NET实现无缝连接(oracleasp)
- .net安装 Linux 上的 ASP.NET 环境(linux安装asp)
- Net不再压着 MSSql,语音变得前景无限(net mssql语音)
- NET 与 Oracle技术结合开启数据库新篇章(.net事物oracle)
- NET和MySQL的无缝搭配实现创新的技术路径(.net mysql支持)
- Redis集群实现高性能NET应用(redis集群 .net)
- REDIS锁技术提升NET应用性能(redis 锁 .net)
- 给.net初学者的一些建议(共勉之)
- 在Apache环境下成功的运行ASP.NET的注意事项
- ASP.NET生成静态页面实现思路
- javascript与asp.net(c#)互相调用方法
- asp.net下用Aspose.Wordsfor.NET动态生成word文档中的数据表格的方法
- asp.net正则表达式删除指定的HTML标签的代码
- .Net中导出数据到Excel(asp.net和winform程序中)
- ASP.NET中相对路径的使用总结
- ASP.NET连接MySql数据库的2个方法及示例
- ASP.NET使用GridView导出Excel实现方法