Тихая установка внутри контейнера Windows Docker (NSIS) - PullRequest
0 голосов
/ 09 мая 2020

Для проекта в нашей компании мы хотели бы создать контейнер Windows для запуска стороннего приложения в облаке. Мы используем docker изображений из этого репозитория в качестве основы. Программа установки стороннего приложения использует NSIS и поддерживает автоматическую установку. Локально я могу успешно запустить установку в PowerShell, используя:

Start-Process -FilePath <installer path> -ArgumentList '/S' -NoNewWindow -Wait -PassThru -RedirectStandardOutput output.txt -RedirectStandardError error.txt

Я получаю идентификатор процесса, сообщаемый для отдельного процесса, и оболочка блокируется до завершения установки. Файлы stdout / stderr пусты. Когда я запускаю ту же команду внутри docker, я снова получаю идентификатор процесса для отдельного процесса (все остальные столбцы статистики равны нулю, что означает, что ресурсы не используются). Оболочка немедленно разблокируется. Опять же, файлы stdout и stderr пусты.

Есть ли лучший способ отладки команд Start-Process? Любые другие подсказки, чтобы получить дополнительную информацию о том, что здесь происходит не так?

EDIT

Я проверил, что это не связано с конкретным c сторонним приложением или базой образ. То же самое происходит при использовании следующего файла Dockerfile, устанавливающего FileZilla. Моя хост-машина - Windows server 2019 (1809).

FROM mcr.microsoft.com/windows/servercore:ltsc2019

RUN powershell.exe -Command \
    $ErrorActionPreference = 'Stop'; \
    wget https://download.filezilla-project.org/client/FileZilla_3.48.0_win64_sponsored-setup.exe -OutFile C:\filezilla_setup.exe
RUN powershell.exe -Command \
    $ErrorActionPreference = 'Stop'; \
    Start-Process -FilePath C:\filezilla_setup.exe -ArgumentList '/S /NCRC' -NoNewWindow -Wait -PassThru
RUN powershell.exe -Command \
    $ErrorActionPreference = 'Stop'; \
    ls 'C:\\Program Files\\'
RUN powershell.exe -Command \
    $ErrorActionPreference = 'Stop'; \
    ls 'C:\\Program Files (x86)\\'

FileZilla не может быть найден в Program Files после установки. Опять же, локально FileZilla присутствует в C:\Program Files после выполнения тех же команд на моем хост-компьютере.

1 Ответ

0 голосов
/ 13 мая 2020

Для всех, у кого есть подобная проблема, она была задокументирована на веб-сайте Microsoft . Ее можно решить, установив последние обновления безопасности и удалив базовые образы, чтобы выполнить чистую установку Docker.

...