URL Docker Rewrite 2.0 安装失败

URL Rewrite 2.0 installation fails on Docker

我正在尝试使用此 Dockerfile 安装 URL Rewrite 2.0:

FROM microsoft/aspnet:4.6.2
WORKDIR /inetpub/wwwroot
COPY obj/Docker/publish .
ADD https://download.microsoft.com/download/C/9/E/C9E8180D-4E51-40A6-A9BF-776990D8BCA9/rewrite_amd64.msi /install/rewrite_amd64.msi
RUN net start MSIServer
RUN msiexec.exe /i c:\install\rewrite_amd64.msi /quiet /passive /qn /L*v "C:\package.log"

当我构建容器镜像时,我看到了这条错误消息:

无法访问 Windows 安装程序服务。如果未正确安装 Windows 安装程序,就会发生这种情况。请联系您的支持人员寻求帮助。

查看 运行 容器后的 package.log,我看到了这个:

SI (c) (30:A4) [08:32:10:438]: Failed to connect to server. Error: 0x80040150
SI (c) (30:A4) [08:32:10:438]: Note: 1: 2774 2: 0x80040150: 2774 2: 0x80040150

在 运行 容器上执行 net start msiserver returns 一条消息表明服务已经启动,Google 说 0x80040150 可能是读取注册表的问题。

是否希望以这种方式安装 URL Rewrite 应该有效,还是我需要以某种方式提升权限?

更新:运行 运行 容器上的相同 msiexec 命令成功安装URL重写。

感谢this article,我终于弄明白了。使用 PowerShell 到 运行 msiexec 和适当的开关可以工作。奇怪的是,它在尝试使用 PowerShell 下载 MSI 时抛出了 "Unable to connect to the remote server",所以我求助于使用 ADD.

这是我的 Dockerfile 的相关部分:

WORKDIR /install
ADD https://download.microsoft.com/download/C/9/E/C9E8180D-4E51-40A6-A9BF-776990D8BCA9/rewrite_amd64.msi rewrite_amd64.msi
RUN Write-Host 'Installing URL Rewrite' ; \
    Start-Process msiexec.exe -ArgumentList '/i', 'rewrite_amd64.msi', '/quiet', '/norestart' -NoNewWindow -Wait