Присвоение переменных окружения в Dockerfile в результате команды - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь присвоить результат команды powershell переменной окружения MY_VAR. Я пробовал несколько способов, но я не могу получить переменную, чтобы принять значение операции. Если я присваиваю переменную следующим образом, то в качестве значения я получаю буквально команду.

ARG MY_ARG="VALUE"

ENV MY_VAR=[Convert]::ToBase64String([system.Text.Encoding]::UTF8.GetBytes($MY_ARG))

ENV MY_VAR2=$([Convert]::ToBase64String([system.Text.Encoding]::UTF8.GetBytes($MY_ARG)))

Когда я проверяю значения в контейнере, я получаю это:

Get-Childitem -Path Env:MY_VAR*

Name                           Value                                                                                                                                              
----                           -----                                                                                                                                              
MY_VAR                         [Convert]::ToBase64String([system.Text.Encoding]::UTF8.GetBytes(VALUE))  
MY_VAR2                        $([Convert]::ToBase64String([system.Text.Encoding]::UTF8.GetBytes(VALUE)))

База мои контейнеры Windows Server Core, а моя оболочка - powershell.

1 Ответ

0 голосов
/ 30 марта 2020

См. этот пост SO , он содержит несколько обходных путей для достижения желаемого.

ENV рассматривает значение как простую текстовую строку.

ОБНОВЛЕНИЕ:

В соответствии с ответами и комментариями здесь :

1) RUN $profile, который покажет вам местоположение профиля среды. Узнайте больше об этом файле.

2) Попробуйте RUN $env.MY_VAR = [Convert]::ToBase64String([system.Text.Encoding]::UTF8.GetBytes($MY_ARG)) >> $profile или другим способом добавить команду в файл. Я недостаточно знаком с powershell, поэтому помните, что вы, возможно, захотите слегка исправить команду. (Прокомментируйте правильную команду, и я исправлю ее для следующих зрителей.)

3) Попробуйте прочитать MY_VAR в контейнере. Если все правильно, то Hoooray !, еще раз проверьте в профиле $, что вы действительно получаете правильную строку установки переменной.

...