dotnet-framework-docker samples实战10个示例带你掌握.NET Framework容器化技巧【免费下载链接】dotnet-framework-dockerThe repo for the official docker images for .NET Framework on Windows Server Core.项目地址: https://gitcode.com/gh_mirrors/do/dotnet-framework-docker想要在现代开发环境中快速部署.NET Framework应用吗微软官方提供的dotnet-framework-docker项目为您提供了完整的容器化解决方案 无论您是.NET Framework新手还是经验丰富的开发者这篇文章将通过10个实用示例带您轻松掌握.NET Framework容器化的核心技巧。什么是dotnet-framework-dockerdotnet-framework-docker是微软官方维护的Docker镜像仓库专门为.NET Framework应用程序提供容器化支持。该项目包含了从运行时、SDK到ASP.NET和WCF的全套Docker镜像让您能够轻松地将传统的.NET Framework应用迁移到现代容器化环境中。准备工作环境搭建在开始之前您需要准备以下环境Windows环境Windows 10/11或Windows Server 2016Docker Desktop安装最新版本的Docker Desktop for WindowsGit用于克隆项目仓库克隆项目仓库到本地git clone https://gitcode.com/gh_mirrors/do/dotnet-framework-docker cd dotnet-framework-docker示例1快速运行预构建的.NET Framework控制台应用最简单的入门方式就是运行预构建的示例镜像docker run --rm mcr.microsoft.com/dotnet/framework/samples:dotnetapp这个命令会下载并运行一个简单的.NET Framework控制台应用输出Hello World!。这是验证Docker环境是否正常工作的最佳方式示例2构建自定义控制台应用容器让我们从samples/dotnetapp目录开始构建自己的.NET Framework控制台应用cd samples/dotnetapp docker build --pull -t mydotnetapp . docker run --rm mydotnetapp查看Dockerfile您会发现它使用了多阶段构建技术先使用SDK镜像编译应用然后将编译结果复制到运行时镜像中这样可以大大减小最终镜像的体积。示例3运行ASP.NET Web Forms应用ASP.NET Web Forms是.NET Framework中广泛使用的Web开发框架。运行预构建的ASP.NET示例docker run --name aspnet_sample --rm -it -p 8000:80 mcr.microsoft.com/dotnet/framework/samples:aspnetapp打开浏览器访问http://localhost:8000您将看到一个简单的ASP.NET Web Forms应用。对于早期Windows版本可能需要使用容器IP地址访问。示例4构建自定义ASP.NET应用在samples/aspnetapp目录中您可以找到完整的ASP.NET Web Forms示例cd samples/aspnetapp docker build --pull -t myaspnetapp . docker run --name myaspnetapp --rm -it -p 8080:80 myaspnetapp这个示例展示了如何将传统的ASP.NET Web Forms应用容器化并配置IIS作为Web服务器。示例5运行ASP.NET MVC应用除了Web Forms项目还提供了ASP.NET MVC示例。在samples/aspnetmvcapp目录中cd samples/aspnetmvcapp docker build --pull -t myaspnetmvcapp . docker run --name myaspnetmvcapp --rm -it -p 8081:80 myaspnetmvcapp访问http://localhost:8081即可查看MVC应用运行效果。示例6WCF服务容器化实战Windows Communication Foundation (WCF)是.NET Framework中重要的服务通信框架。在samples/wcfapp目录中您将找到完整的WCF容器化示例。首先启动WCF服务容器docker run --name wcfservice_sample --rm -it mcr.microsoft.com/dotnet/framework/samples:wcfservice获取容器IP地址docker inspect --format{{.NetworkSettings.Networks.nat.IPAddress}} wcfservice_sample然后启动WCF客户端容器替换YOUR_IP为实际IPdocker run --name wcfclient_sample --rm -it -e HOSTYOUR_IP mcr.microsoft.com/dotnet/framework/samples:wcfclient示例7使用Docker Compose编排WCF服务对于复杂的WCF应用项目提供了Docker Compose配置。在samples/wcfapp目录中您会发现两个docker-compose文件docker-compose-iishosted.ymlIIS托管的WCF服务docker-compose-selfhosted.yml自托管的WCF服务运行IIS托管的WCF服务docker-compose -f docker-compose-iishosted.yml up示例8本地开发与调试技巧虽然容器化部署很方便但本地开发调试同样重要。项目提供了多种本地构建方式使用.NET SDK构建cd samples/dotnetapp dotnet run dotnet publish -c Release -o out使用MSBuild构建cd samples/dotnetapp msbuild /t:restore msbuild /p:ConfigurationRelease示例9多阶段构建优化镜像大小查看示例中的Dockerfile您会发现它们都使用了多阶段构建技术。以aspnetapp/Dockerfile为例FROM mcr.microsoft.com/dotnet/framework/sdk:4.8 AS build WORKDIR /app COPY *.sln . COPY aspnetapp/*.csproj ./aspnetapp/ RUN nuget restore COPY aspnetapp/. ./aspnetapp/ WORKDIR /app/aspnetapp RUN msbuild /p:ConfigurationRelease FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8 AS runtime WORKDIR /inetpub/wwwroot COPY --frombuild /app/aspnetapp/. ./这种技术将构建环境与运行环境分离最终镜像只包含运行时必需的文件大大减小了镜像体积。示例10生产环境部署最佳实践项目文档中强调了开发环境与生产环境的区别开发环境docker run --rm -it -p 8000:80 myapp生产环境docker run -d --restartalways -p 80:80 myapp关键区别生产环境使用-d参数在后台运行不使用--rm参数以便收集日志和调试信息添加--restartalways确保容器异常退出时自动重启镜像标签策略与版本管理项目支持多个Windows Server Core版本和.NET Framework版本Windows Server Core版本ltsc2016, ltsc2019, ltsc2022, ltsc2025.NET Framework版本4.8, 4.8.1镜像类型runtime, sdk, aspnet, wcf, samples您可以在manifest.json和manifest.versions.json中查看完整的版本配置。常见问题与解决方案1. 容器IP地址访问问题对于早期Windows版本可能需要通过容器IP地址而非localhost访问应用docker exec 容器名称 ipconfig2. 端口冲突处理如果端口被占用可以更改映射端口docker run -p 8080:80 myapp # 将主机8080端口映射到容器80端口3. 镜像构建失败确保使用正确的Windows版本和.NET Framework版本标签检查Dockerfile中的基础镜像引用。进阶技巧自定义镜像构建如果您需要构建自定义镜像可以参考项目中的模板文件。在eng/dockerfile-templates/目录中您会找到各种镜像的Cottle模板文件。要修改Dockerfile请编辑模板文件后运行./eng/dockerfile-templates/Get-GeneratedDockerfiles.ps1测试与验证项目包含了完整的测试套件您可以使用以下命令运行测试# 构建并测试所有4.8版本的镜像 ./build-and-test.ps1 -Version 4.8 # 仅构建特定版本和OS ./build-and-test.ps1 -Version 4.8 -OS windowsservercore-ltsc2019 -Mode Build # 仅运行测试 ./build-and-test.ps1 -Version 4.8 -Mode Test总结通过这10个实用示例您已经掌握了.NET Framework容器化的核心技巧从简单的控制台应用到复杂的WCF服务dotnet-framework-docker项目为您提供了完整的解决方案。关键要点使用官方镜像确保兼容性和安全性多阶段构建优化镜像大小区分开发和生产环境配置充分利用Docker Compose进行服务编排定期更新镜像以获得最新的安全补丁现在就开始您的.NET Framework容器化之旅吧无论是遗留系统迁移还是新项目开发容器化都能为您带来部署灵活性和环境一致性。提示更多详细信息和最新更新请参考项目中的README文件和文档目录。【免费下载链接】dotnet-framework-dockerThe repo for the official docker images for .NET Framework on Windows Server Core.项目地址: https://gitcode.com/gh_mirrors/do/dotnet-framework-docker创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考