2017-02-07 7 views
0

Мне нужно добавить PATH в контейнер Windows Docker, и я пробовал много перестановок.Добавление в PATH в контейнере Windows Docker

ENV PATH=%PATH%;C:\\Foo\\bin 
ENV PATH=$PATH;C:\\Foo\\bin 
ENV PATH="%PATH%;C:\Foo\bin" 
ENV PATH="$PATH;C:\Foo\bin" 
RUN "set PATH=%PATH%;C:\Foo\bin" 

Ни одна из этих работ: они не оценивают существующую переменную PATH.

Каков правильный синтаксис добавления к PATH? Могу ли я даже добавить к PATH внутри Docker? (Я могу на аналогичных контейнерах Linux)

+0

Переменные окружения, которые вы передаете в контейнер Docker, видны только для процессов, выполняемых исполняемым файлом docker. Они не будут видны машиной. Но если вы в порядке, то почему бы просто не прочитать эту переменную во время запуска и не добавить переменную PATH один раз внутри контейнера. Проблема с переменными окружения, которые не видны в системе, находится здесь https://github.com/docker/docker/issues/30192 –

+0

@GSA, если нет решения, я бы тоже счел это ответом. Но я удивлен, что «Append to PATH для моей контейнерной среды» не является решаемым пользовательским сюжетом для контейнеров Windows. – macetw

ответ

3

Вы можете постоянно устанавливать переменные среды в контейнер с помощью сценария powershell.

Создание сценария Powershell в YOUT контексте Docker (например setpath.ps1), содержащий это:

[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Foo\bin", [EnvironmentVariableTarget]::Machine) 

Добавить этот скрипт в контейнер dockerfile и запустить скрипт. Добавьте что-то подобное в ваш файл докеров:

ADD ./setpath.ps1 c:/MyScripts/setpath.ps1 
RUN powershell -Command c:\MyScripts\setpath.ps1