如何在Dockerfile
windows 图像中定义变量,以便在后续RUN
语句中可以访问它们?
我的测试Dockerfile
看起来像这样
FROM microsoft/windowsservercore
SHELL ["powershell", "-Command"]
ARG viaArg=value
ENV viaEnv="""value"""
RUN $viaShell=\"value\"
RUN echo """viaArg: $env:viaArg"""
RUN echo """viaEnv: $env:viaEnv"""
RUN echo """viaShell: $myusername"""
RUN echo """viaShell+env: $env:viaShell"""
通过构建图像时
PS > docker build -t myImage 。
仅显示viaArg
( viaEnv
a) 值。
这里的第一个示例将多个命令放在一行中,例如
RUN $someVar=\"2.60.3\" ; echo $someVar
但肯定有不同的方式。
使用$env
命名空间是唯一可能的方法吗?
如何setx
参与这一切?
注意:我没有尝试从命令行传递变量,因此ARG
可能已经以错误的方式使用。而且我不想永久设置变量,它们应该只在构建运行期间存在,所以我不需要它们在注册表中。
使用的版本是
PS > docker -v
Docker version 17.12.0-ce, build c97c6d6
PS > [System.Environment]::OSVersion.Version
Major Minor Build Revision
----- ----- ----- --------
10 0 14393 0
PS > (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ReleaseId).ReleaseId
1607