Windows 部署:制品、DSC 与容器边界
发布不可变制品,用 PowerShell DSC 或流水线管配置,并分清 Windows 容器何时省事、何时添乱。
测试环境Standard / Datacenter · 版本号 26100.33650 · x64
E1- 版本号
- 26100.33650
- 版本
- Standard / Datacenter
- 架构
- x64
- 支持
- 文档(E1)
- 证据
- E1官方文档
- 核验日期
- 2026-10-29
- 页面类型
- 方法
三层:
- 制品 — 带版本的构建(zip/msi/镜像),不可变。
- 配置 — DSC/流水线,不在服务器上手改。
- 发布 — 交换/暂存、健康检查、回滚。
还在 RDP 拷文件,就答不出“现在跑的是什么”。
- 构建一次,同一字节部署到每个节点。
- 版本化(
app-2026.10.29-1),保留校验和。 - 包含
web.config、迁移、静态资源。 - 保留最近 N 个制品回滚。
PowerShell DSC 可强制 IIS 站点/池状态:
Configuration WebTier { Import-DscResource -ModuleName PSDesiredStateConfiguration, WebAdministration Node 'localhost' { WindowsFeature IIS { Name = 'Web-Server'; Ensure = 'Present' } WebAppPool AppPool { Name = 'apppool'; Ensure = 'Present' managedRuntimeVersion = '' } WebSite Site { Name = 'app'; PhysicalPath = 'C:\sites\app' ApplicationPool = 'apppool'; State = 'Started' Ensure = 'Present' } }}DSC 需要 WebAdministration DSC 资源(或 xWebAdministration)和 pull/apply 方案。不是一行命令。
- 部署到 staging 槽/目录;预热。
- 切站点根或绑定;保留旧目录。
- 健康检查
/readyz;失败回滚。 - 低峰发布;看 5xx/延迟。
Windows 容器适合:
- 应用自包含且兼容 Windows;
- 需要 dev/prod 一致;
- 已有容器编排。
添乱的情况:
- 应用依赖宿主 IIS 模块/COM/注册表;
- 基础镜像大小/版本不匹配(Server 2022 vs 2025);
- 没有 registry/补丁流水线。
(Get-Item C:\sites\app\app.dll).VersionInfo.FileVersionGet-WebSite app | Select-Object Name,PhysicalPath,State部署版本与制品一致,站点根指向你以为的位置。
E1。实验室手工部署(IIS 站点、Nginx zip、PHP zip),没有 DSC 或容器。流水线是 Server 2025 的生产方法。