在Docker上进行URL Rewrite 2.0安装失败

Jar*_*red 4 url-rewrite-module dockerfile

我正在尝试使用此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"
Run Code Online (Sandbox Code Playgroud)

构建容器映像时,看到以下错误消息:

无法访问Windows Installer服务。如果未正确安装Windows Installer,则会发生这种情况。请与您的支持人员联系以获得帮助。

运行容器后查看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
Run Code Online (Sandbox Code Playgroud)

执行中 net start msiserver在正在运行的容器上将返回一条消息,表明该服务已启动,Google表示读取注册表可能是0x80040150的问题。

是否期望以这种方式安装URL Rewrite可以正常工作,还是我需要以某种方式提升权限?

更新:msiexec在正在运行的容器上运行相同的命令将成功安装URL Rewrite。

Jar*_*red 6

由于这篇文章,我终于弄清楚了。使用PowerShell运行msiexec适当的开关即可。奇怪的是,当尝试同时使用PowerShell 下载 MSI 时,它抛出“无法连接到远程服务器” ,因此我诉诸于使用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
Run Code Online (Sandbox Code Playgroud)

  • .msi 的 URL 已更改。对于 URL 重写版本 2.1 x64(英文),现在为 https://download.microsoft.com/download/1/2/8/128E2E22-C1B9-44A4-BE2A-5859ED1D4592/rewrite_amd64_en-US.msi。您可以在此页面底部找到所有版本:https://www.iis.net/downloads/microsoft/url-rewrite (3认同)