2017-02-07 63 views
0

我需要附加到Windows Docker容器中的PATH,并尝试了许多排列。附加到Windows Docker容器中的PATH

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?我可以附加到Docker内的PATH吗? (我可以在类似的Linux容器上)

+0

您传递给Docker容器的环境变量仅对由docker可执行文件执行的进程可见。它们不会在整个机器上可见。但是,如果你确定,那么为什么不在启动期间读取这个变量,而是在容器中追加一次PATH变量。环境变量的问题不可见系统范围在这里https://github.com/docker/docker/issues/30192 –

+0

@GSA,如果没有解决方案,我会考虑这个答案。但我很惊讶,“为我的容器环境附加PATH”并不是解决Windows容器的用户故事。 – macetw

回答

3

您可以使用powershell脚本在容器中永久设置环境变量。

创建YOUT泊坞窗范围内包含此PowerShell脚本(例如setpath.ps1):

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

添加这个脚本到您的容器dockerfile并运行该脚本。在dockerfile中添加如下代码:

ADD ./setpath.ps1 c:/MyScripts/setpath.ps1 
RUN powershell -Command c:\MyScripts\setpath.ps1 
相关问题