无法使用PowerShell启动过程在Dockerfile中运行setup.exe

时间:2018-09-10 22:39:07

标签: powershell docker devops docker-windows

我有一个简单的基于docker windows的映像,它要做的一件事就是运行setup.exe来安装一些东西。

在Windows UI中运行时,该setup.exe会将东西安装到C:/Program Files x86/Common Files/someFolder中。在Powershell中运行时,它可以工作。但是,当与docker运行时,它不是。详细信息如下。

构建docker映像,您可以在其中看到安装程序的开始,但是并不需要很长时间...

λ docker build -t test -f Dockerfile-test .
Sending build context to Docker daemon  286.8MB
Step 1/4 : FROM stefanscherer/node-windows
 ---> 736520eb3998
Step 2/4 : WORKDIR /app/
 ---> Using cache
 ---> 039fd8f0cd4a
Step 3/4 : COPY ./binaries ./
 ---> Using cache
 ---> 9fdaa51ee64d
Step 4/4 : RUN powershell.exe -Command Start-Process -FilePath setup.exe -PassThru -Wait
 ---> Running in 5676e0e08c6d

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
              0        0          0              4260


Removing intermediate container 5676e0e08c6d
 ---> 98d9f0818c5c
Successfully built 98d9f0818c5c
Successfully tagged test:latest

在Powershell中运行setup.exe:

PS C:\Users\...\binaries> Start-Process -Wait -FilePath "setup.exe" -ArgumentList "/S" -PassThru

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
      0       2      492         88       0,03   1244   1 setup

然后cmd进入容器

λ docker run -it test cmd

> C:/app/>  cd ..
> C:/> cd "Program Files (x86)"
> C:/Program Files (x86)> cd "Common Files"
> C:/Program Files (x86)/Common Files> dir
*empty*

setup.exe应该在common files内安装文件,但是为空。

有什么想法吗?

0 个答案:

没有答案