Разобрать переменные среды процесса до Windows Задача - PullRequest
1 голос
/ 16 марта 2020

Я только начал с Docker на Windows, и у меня довольно интересная задача.

У меня есть служба, встроенная в образ Docker, которая может читать только переменные среды уровня машины, поэтому цель состоит в том, чтобы проанализировать env из Docker (или K8s spe c) в время выполнения, затем преобразуйте переменные среды процесса в переменные среды компьютера. Эта проблема хорошо описана в этом блоге Элтона.

Теперь, когда я использую скрипт Powershell bootstrap, чтобы скопировать переменные среды процесса в переменные среды машины в качестве команды ENTRYPOINT, все это прекрасно работает. См. Это gist

ENTRYPOINT ["powershell", "./bootstrap.ps1"]

Однако в качестве ENTRYPOINT контейнера в соответствии со спецификацией должен использоваться EXE-файл, поэтому я решил создать задачу для запуска * Скрипт 1040 * .ps1 при запуске.

RUN $action = New-ScheduledTaskAction -Execute 'C:\BootstrapInit.bat""'; \
    $trigger = New-ScheduledTaskTrigger -AtStartup ; \
    $principal = New-ScheduledTaskPrincipal -UserID "SYSTEM" ; \
    $settings = New-ScheduledTaskSettingsSet -MultipleInstances Parallel; \
    Register-ScheduledTask -TaskName 'BootstrapMyApp' -Action $action -Trigger $trigger -Description 'blba' -Settings $settings -Principal $principal; 

пакетный файл вызывает Powershell следующим образом:

Powershell.exe -ExecutionPolicy ByPass -File C:\boostrap.ps1 

Проблема:

Сценарий успешно выполнен, но не может найти переменные среды процесса, которые были установлены во время выполнения. Скорее всего, это связано с тем, как Powershell управляет переменными среды в сеансе.

Вопрос:

Есть ли способ перезагрузить переменные среды уровня процесса, которые были установлены при запуске контейнера, чтобы сделать их доступными для ScheduledTask?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...