DockerFile调用安装msi

时间:2018-03-29 10:29:03

标签: powershell docker

我很难通过Dockerfile安装msi。我的Dockerfile:

FROM microsoft/windowsservercore:latest

RUN mkdir C:\temp 
RUN mkdir C:\temp\msis

COPY . "C:/temp/msis"
RUN powershell -version 5.0 -command { Start-process -Filepath "C:\temp\msis\mySetup.msi" -ArgumentList  "/qn" -PassThru | Wait-Process}

通过以下方式运行docker build时:

docker build -t myTools .

我收到以下错误:

Step 7/7 : RUN powershell -version 5.0 -command { Start-process -Filepath "C:\temp\msis\mySetup.msi" -ArgumentList  "/qn" -PassThru | Wait-Process}
---> Running in d6f9f65d96a9
'Wait-Process}' is not recognized as an internal or external command,operable program or batch file.

如果我在没有RUN步骤的情况下构建容器,并通过-it将自己附加到正在运行的容器并粘贴命令powershell -version 5.0 -command { Start-process -Filepath "C:\temp\msis\mySetup.msi" -ArgumentList "/qn" -PassThru | Wait-Process},则MSI会正确安装。

有人知道这次失败会发生吗?

THX

1 个答案:

答案 0 :(得分:6)

可能是PowerShell解析问题。

尝试这两行而不是最后一行:

SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]

RUN Start-Process 'C:\\temp\\msis\\mySetup.msi' '/qn' -PassThru | Wait-Process;

之后,如果您愿意,可以恢复为cmd.exe:

SHELL ["cmd", "/C"]