У меня есть простой образ окна, основанного на Docker, и он запускает файл setup.exe для установки некоторых компонентов.
Этот setup.exe при запуске в пользовательском интерфейсе Windows устанавливает вещи в C:/Program Files x86/Common Files/someFolder
. При запуске внутри PowerShell это работает. Но когда запускается с докером, это не так. Подробности ниже.
Построение образа докера, где вы можете увидеть, как начинается установка, но это не займет много времени ...
λ 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
Запуск setup.exe внутри powershell:
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
, но он пустой.
Есть идеи?