在Windows Docker容器中附加到PATH

问题描述 投票:6回答:3

我需要在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容器上)

docker containers windows-container
3个回答
6
投票

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

在yout docker context(例如setpath.ps1)中创建一个包含以下内容的powershell脚本:

[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

7
投票

不幸的是ENV不起作用,因为windows环境变量的工作方式与linux不同。 more info

截至目前,唯一的方法是通过RUN

但是您不需要创建单独的文件来执行此操作。这可以通过以下更简单的一行命令来完成:

RUN setx path "%path%;C:\Foo\bin"


2
投票

[Environment]::SetEnvironmentVariable是一种很好的方式,但不适用于纳米级。最好的选择是:

RUN setx path '%path%;C:\Foo\bin'
© www.soinside.com 2019 - 2024. All rights reserved.