我有一个简单的基于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
内安装文件,但是为空。
有什么想法吗?