跳转到内容

Windows 部署:制品、DSC 与容器边界

核验于 1 分钟阅读

发布不可变制品,用 PowerShell DSC 或流水线管配置,并分清 Windows 容器何时省事、何时添乱。

测试环境Standard / Datacenter · 版本号 26100.33650 · x64
E1
版本号
26100.33650
版本
Standard / Datacenter
架构
x64
支持
文档(E1)
证据
E1官方文档
核验日期
2026-10-29
页面类型
方法

三层:

  1. 制品 — 带版本的构建(zip/msi/镜像),不可变。
  2. 配置 — DSC/流水线,不在服务器上手改。
  3. 发布 — 交换/暂存、健康检查、回滚。

还在 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.FileVersion
Get-WebSite app | Select-Object Name,PhysicalPath,State

部署版本与制品一致,站点根指向你以为的位置。

E1。实验室手工部署(IIS 站点、Nginx zip、PHP zip),没有 DSC 或容器。流水线是 Server 2025 的生产方法。

来源