windows - 在 Windows dockerfile 中转义美元符号

标签 windows powershell docker dockerfile

我想将一个文件复制到 $PSHOME,所以我的 dockerfile 中有这个:

COPY profile.ps1 "\$PSHOME\profile.ps1"

不幸的是,这会在 CWD 名称“$PSHOME”中创建一个文件夹并将文件复制到那里。

也许这是不可能的? $PSHOME 是一个自动变量,而不是环境变量,所以它可能只能从 PowerShell session 访问吗?

最佳答案

在 Dockerfile 中,您使用反斜杠 ( see the documentation for more details ) 对 $ 进行转义。对于路径分隔符,您可以切换到正斜杠。但是,Docker 只会扩展在 Dockerfile 中定义的构建参数和环境变量,而不是来自外部环境或 PowerShell 的值。 (要理解为什么,要意识到构建在 Docker 引擎上运行,而不是在客户端命令行中运行,并且引擎可以是远程服务器。)

最后一点,如果您想在构建 Windows 容器时使用反斜杠,可以更改转义字符。这是通过设置 a parser directive 来完成的。在 Dockerfile 的顶部:

# escape=`

关于windows - 在 Windows dockerfile 中转义美元符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51548272/

相关文章:

windows - 如何通过命令提示符禁用和启用 USB 端口?

docker - Docker镜像运行不正确的命令

docker - 在 github 工作流图像上启用实验性 docker 功能

windows - 我到处寻找改变Apache上的DocumentRoot但无济于事

c - wchar 和注册表项的问题

c++ - 检测文件是否已更改的可靠方法

docker - 查看与标签关联的dockerFile

powershell - 等效于 PowerShell 中的 net localgroup 管理员

git - 如果未安装,请安装GIT并克隆

powershell - 在大文件中查找和替换