我们都知道,在Dockerfile中除了可以直接简单地引入运行环境镜像,也可以引入sdk镜像来执行编译和打包的操作,这一特点十分适合在持续集成的任务中执行 。
因此,首先,我们将上面的Dockerfile改一下:
FROM mcr.microsoft.com/dotnet/framework/sdk:4.8 AS buildWORKDIR /app# copy csproj and restore as distinct layersCOPY *.sln .COPY aspnetmvcapp/*.csproj ./aspnetmvcapp/COPY aspnetmvcapp/*.config ./aspnetmvcapp/RUN nuget restore# copy everything else and build appCOPY aspnetmvcapp/. ./aspnetmvcapp/WORKDIR /app/aspnetmvcappRUN msbuild /p:Configuration=Release -r:FalseFROM mcr.microsoft.com/dotnet/framework/aspnet:4.8 AS runtimeWORKDIR /inetpub/wwwrootCOPY --from=build /app/aspnetmvcapp/. ./
其次,我们将源代码拷贝到阿里云ECS下,假设在C:\Sources\aspnetmvcapp目录下 。
文章插图
然后,就又是熟悉的build镜像过程了,还是原来的味道:
> docker build -t reg.edisonzhou.cn/dotnet/samples:aspnetmvcapp-v2 .
这里编译涉及到Nuget Restore的过程,可能会稍微慢一点 。有了打包好的镜像,我们再来运行一下容器实例:
> docker stop aspnet_mvc_sample> docker run --name aspnet_mvc_sample --rm -it -d -p 8000:80 reg.edisonzhou.cn/dotnet/samples:aspnetmvcapp-v2
最终的效果,我们还是可以通过 http://localhost:8000 访问到 。文章插图
4 更多
Docker Compose
我们也可以在Windows Server上安装Docker Compose来进行单主机的容器编排,在Linux上操作Docker Compose的经验同样也可以平滑迁移到Windows Container上:
>Invoke-WebRequest https://github.com/docker/compose/releases/download/1.25.4/docker-compose-Windows-x86_64.exe -UseBasicParsing -OutFile $env:ProgramFiles\docker\docker-compose.exe>docker-compose version
资源限制我们也可以为Windows Container设置资源限制,例如下面我们为ASP.NET MVC的这个sample设置只能使用1个cpu,最大内存限制1024M:
docker run --name aspnet_mvc_sample --rm -it -d -p 8000:80 --cpus 1 -m 1024m reg.edisonzhou.cn/dotnet/samples:aspnetmvcapp
挂载本地文件我们也可以为Windows Container挂载本地文件目录用于映射应用程序的文件,比如config文件等:
docker run --name aspnet_mvc_sample --rm -it -d -p 8000:80 --cpus 1 -m 1024m -v C:\IIS\config\aspnetmvcapp:C:\inetpub\wwwroot\Configs reg.edisonzhou.cn/dotnet/samples:aspnetmvcapp
5 总结本文介绍了如何在Windows Container下通过Dockerfile实现.NET 4.x应用程序的编译打包构建过程,并以一个ASP.NET MVC的Sample示例演示了整个过程 。
下一篇,我们会实现将编译的镜像推送到harbor私有镜像仓库,并尝试在Windows Server端拉取harbor中的镜像并run一下 。
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- 1 传统.NET 4.x应用容器化
- 3 传统.NET 4.x应用容器化
- 4 传统.NET 4.x应用容器化
- 5 传统.NET 4.x应用容器化
- 强健骨骼 经常抖抖身体
- 正月十三,传说是阎王最讨厌的一天,忌3事、吃5食,老传统别丢了
- 2021年大寒节气民间传统饮食 应该怎样养生
- 2021年立春节气由来简介 有哪些民间传统活动
- 传统钓打窝的说法
- 花架子什么意思?传统武术是花架子吗