Windows 10下使用Dockerfile快速部署IIS+ASP.NET网站实战指南

1. 为什么要在Windows 10上用Docker跑IIS和ASP.NET?

如果你和我一样,是个主要用Windows做开发的.NET程序员,可能一开始会觉得在Windows 10上折腾Docker有点“多此一举”。本地不是有IIS Express吗?Visual Studio一点F5就能跑,多方便。我以前也是这么想的,直到我遇到了下面这几个让我头疼的场景。

第一个是环境不一致的“玄学”问题。我的代码在本地Visual Studio 2022上跑得好好的,一发布到测试服务器就报错,不是缺少某个特定的DLL,就是Web.config的某个配置项在服务器IIS上解析不一样。和运维同事来回扯皮,最后发现是服务器上装的.NET Framework版本补丁和我的开发机有细微差别。这种问题排查起来特别费时间,而且很难在本地复现。

第二个是项目依赖的“污染”问题。有些老项目需要特定版本的组件或者特殊的IIS模块,安装它们可能会影响我机器上其他正在运行的项目。更麻烦的是,当你需要同时维护一个用.NET Framework 4.5的老系统和另一个用.NET Core 3.1的新项目时,全局环境配置简直是一场噩梦。

Docker恰恰是解决这些问题的“银弹”。它通过容器技术,把我们的应用程序和它所需要的运行环境——比如特定版本的IIS、.NET Framework、甚至系统补丁——一起打包成一个独立的、轻量化的“集装箱”。这个集装箱在任何安装了Docker的Windows 10机器上,运行起来都是一模一样的。这意味着,你在自己笔记本上测试通过的网站,可以百分百确信它在同事的电脑上、在测试服务器上也能以完全相同的方式运行。这彻底解决了“在我机器上是好的”这个经典难题。

而且,对于ASP.NET(这里主要指传统的.NET Framework应用)开发者来说,在Windows容器里运行IIS,是最贴近生产环境的一种本地模拟方式,比IIS Express更真实。通过Dockerfile,我们可以像写代码一样,用几行命令就定义好整个环境的搭建过程,包括安装IIS模块、配置应用程序池、复制网站文件等。这个过程是可重复、可版本化的。今天我就带你手把手走一遍这个流程,你会发现,用Docker部署一个传统的ASP.NET网站,并没有想象中那么复杂,而且一旦掌握,开发效率会提升一大截。

2. 开工前的准备:搞定你的Windows 10 Docker环境

工欲善其事,必先利其器。在开始编写Dockerfile之前,我们得先把“工地”——也就是Windows 10上的Docker环境给搭建好。这里有几个关键点,我踩过坑,你直接避开就好。

首先,操作系统版本有硬性要求。Docker Desktop for Windows依赖于Windows的Hyper-V虚拟化技术或WSL 2后端。为了能运行Windows容器(我们的IIS需要这个),你的Windows 10必须是专业版、企业版或教育版,家庭版是不行的。其次,版本号最好在1903及以上,这样对Windows容器的支持更完善。你可以按 Win + R,输入 winver 来查看你的具体版本。

第一步,开启虚拟化。这通常在电脑的BIOS或UEFI设置里。重启电脑,进入BIOS(一般是按F2、Delete或F12,不同品牌不一样),找到类似“Virtualization Technology”(Intel VT-x)或“SVM Mode”(AMD-V)的选项,把它设置为 Enabled。保存退出。

第二步,启用Windows功能。回到Windows桌面,在搜索框输入“启用或关闭Windows功能”,打开那个控制面板项。在弹出的窗口里,找到并勾选以下三项:

  • Hyper-V(包含所有子项)
  • Windows 虚拟机监控程序平台
  • 容器

勾选后点击确定,系统会安装这些功能并可能要求你重启电脑。这一步是为Docker提供底层的虚拟化支持。

第三步,安装Docker Desktop。去Docker官网下载Docker Desktop for Windows的安装包。安装过程基本就是一路“Next”,但安装完成后不要急着打开。这里有个重要技巧:由于国内网络环境,Docker拉取镜像可能会非常慢甚至失败。我建议先配置镜像加速器。找到桌面右下角系统托盘隐藏图标里的Docker小鲸鱼图标(安装后会有),右键点击,选择“Settings”。

在设置窗口中,找到“Docker Engine”选项。你会看到一段JSON配置。在其中添加或修改 registry-mirrors 这一项,比如使用国内常用的中科大镜像:

{
  "registry-mirrors": [
    "https://docker.mirrors
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值