Dockerfile中PowerShell RUN命令传递环境变量的正确方法
解决Dockerfile中PowerShell执行cmake传递环境变量的问题
正确写法示例
方法1:用单引号包裹PowerShell命令,确保变量由PowerShell解析
RUN powershell -Command 'cmake "-DPKG_VERSION=$Env:PKG_VERSION" ..'
方法2:使用子表达式语法明确变量解析
RUN cmake "-DPKG_VERSION=$($Env:PKG_VERSION)" ..
方法3:若PKG_VERSION是Docker的ENV变量,可直接用PowerShell环境变量语法
ENV PKG_VERSION=1.0.0 RUN cmake "-DPKG_VERSION=$Env:PKG_VERSION" ..
失败原因说明
在Dockerfile的RUN命令中直接使用本地PowerShell的写法时,Docker会优先尝试将$Env:PKG_VERSION解析为Docker层面的变量(而非PowerShell环境变量),导致变量未正确传递给cmake。通过单引号包裹命令或子表达式语法,可强制让PowerShell负责环境变量的解析,避免Docker预解析的干扰。
内容的提问来源于stack exchange,提问作者malat
相关产品推荐
相关产品推荐

