Не удается запустить setup.exe в Dockerfile с помощью процесса запуска PowerShell - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть простой образ окна, основанного на 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, но он пустой.

Есть идеи?

...