Dockerfile ~ 添加 Windows 文件夹的正确语法
Dockerfile ~ Correct Syntax for Adding Windows Folders
我正在尝试创建一个 Docker 文件,该文件将我在本地 windows 文件系统某处的文件夹添加到 windows 容器中。但是,我无法找出正确的语法。
具体来说,我正在尝试将目录 [C:\Foo Source Files\Zog Foo\Bar] 的内容复制到 Windows 中的 [C:\Bar] Docker容器。
到目前为止,我尝试了以下变体:
ADD ["C:\Foo Source Files\Zog Foo\Bar", "C:/Bar"]
ADD ["C:\Foo Source Files\Zog Foo\Bar\", "C:/Bar/"]
这些在尝试 运行 构建图像时导致了以下错误:
failed to process "[\"C:\Foo": unexpected end of statement while looking for matching double-quote
相比之下,以下变体...
ADD ["C:/Foo Source Files/Zog Foo/Bar", "C:/Bar"]
ADD ["C:/Foo Source Files/Zog Foo/Bar/", "C:/Bar/"]
ADD ["C:\Foo Source Files\Zog Foo\Bar\", "C:/Bar/"]
ADD ["C:\\Foo Source Files\\Zog Foo\\Bar\\", "C:/Bar/"]
ADD ["C:\\Foo Source Files\\Zog Foo\\Bar", "C:/Bar/"]
ADD C:/Foo Source Files/Zog Foo/Bar/, C:/Bar/
ADD C:\Foo Source Files\Zog Foo\Bar\, C:/Bar/
...导致以下不同的错误:
ADD failed: CreateFile \?\C:\ProgramData\Docker\tmp\docker-builder997952273\Foo Source Files\Zog Foo\Bar: The system cannot find the path specified.
这个变体...
ADD C:\Foo Source Files\Zog Foo\Bar\, C:/Bar/
...导致这个略有不同的错误:
ADD failed: CreateFile \?\C:\ProgramData\Docker\tmp\docker-builder997952273\Foo: The system cannot find the path specified.
之后,我尝试重命名我的源文件夹,使它们不包含任何空格,并尝试使用以下语句:
ADD C:\FooSourceFiles\ZogFoo\Bar\, C:/Bar/
...但这只会再次导致以下错误:
ADD failed: CreateFile \?\C:\ProgramData\Docker\tmp\docker-builder197358441\C:FooSourceFilesZogFooBar,: The system cannot find the file specified.
我也试过用额外的斜杠作为转义字符...
ADD C:\FooSourceFiles\ZogFoo\Bar\, C:/Bar/
...但这也失败了,因为显然 Docker 正在 docker 工作目录的子目录中查找文件,即使我试图指示它在绝对路径中查找
ADD failed: CreateFile \?\C:\ProgramData\Docker\tmp\docker-builder492157702\FooSourceFiles\ZogFoo\Bar\,: The system cannot find the path specified.
如有任何帮助,我们将不胜感激。
编辑:
解释为什么这不是 Dockerfile COPY 指令失败的副本?:
这个问题是关于 COPY 指令失败的,结果证明是因为“~/”不起作用,它也是关于 Linux 容器的。我的问题主要是关于在 Windows 容器上使用 ADD 命令的正确语法。我看不出这两个问题有何关联,关于该主题的已批准答案甚至不适用于我的情况。
显然,问题是 Docker 不支持绝对路径 作为输入路径。
我终于能够通过将 "Bar"-文件夹与 Docker 文件放在同一目录中然后在 Docker 中使用以下 ADD 语句来使其工作文件:
ADD Bar C:/Bar/
如果我记错了,可以使用绝对路径作为源路径,请指正
我正在尝试创建一个 Docker 文件,该文件将我在本地 windows 文件系统某处的文件夹添加到 windows 容器中。但是,我无法找出正确的语法。
具体来说,我正在尝试将目录 [C:\Foo Source Files\Zog Foo\Bar] 的内容复制到 Windows 中的 [C:\Bar] Docker容器。
到目前为止,我尝试了以下变体:
ADD ["C:\Foo Source Files\Zog Foo\Bar", "C:/Bar"]
ADD ["C:\Foo Source Files\Zog Foo\Bar\", "C:/Bar/"]
这些在尝试 运行 构建图像时导致了以下错误:
failed to process "[\"C:\Foo": unexpected end of statement while looking for matching double-quote
相比之下,以下变体...
ADD ["C:/Foo Source Files/Zog Foo/Bar", "C:/Bar"]
ADD ["C:/Foo Source Files/Zog Foo/Bar/", "C:/Bar/"]
ADD ["C:\Foo Source Files\Zog Foo\Bar\", "C:/Bar/"]
ADD ["C:\\Foo Source Files\\Zog Foo\\Bar\\", "C:/Bar/"]
ADD ["C:\\Foo Source Files\\Zog Foo\\Bar", "C:/Bar/"]
ADD C:/Foo Source Files/Zog Foo/Bar/, C:/Bar/
ADD C:\Foo Source Files\Zog Foo\Bar\, C:/Bar/
...导致以下不同的错误:
ADD failed: CreateFile \?\C:\ProgramData\Docker\tmp\docker-builder997952273\Foo Source Files\Zog Foo\Bar: The system cannot find the path specified.
这个变体...
ADD C:\Foo Source Files\Zog Foo\Bar\, C:/Bar/
...导致这个略有不同的错误:
ADD failed: CreateFile \?\C:\ProgramData\Docker\tmp\docker-builder997952273\Foo: The system cannot find the path specified.
之后,我尝试重命名我的源文件夹,使它们不包含任何空格,并尝试使用以下语句:
ADD C:\FooSourceFiles\ZogFoo\Bar\, C:/Bar/
...但这只会再次导致以下错误:
ADD failed: CreateFile \?\C:\ProgramData\Docker\tmp\docker-builder197358441\C:FooSourceFilesZogFooBar,: The system cannot find the file specified.
我也试过用额外的斜杠作为转义字符...
ADD C:\FooSourceFiles\ZogFoo\Bar\, C:/Bar/
...但这也失败了,因为显然 Docker 正在 docker 工作目录的子目录中查找文件,即使我试图指示它在绝对路径中查找
ADD failed: CreateFile \?\C:\ProgramData\Docker\tmp\docker-builder492157702\FooSourceFiles\ZogFoo\Bar\,: The system cannot find the path specified.
如有任何帮助,我们将不胜感激。
编辑: 解释为什么这不是 Dockerfile COPY 指令失败的副本?: 这个问题是关于 COPY 指令失败的,结果证明是因为“~/”不起作用,它也是关于 Linux 容器的。我的问题主要是关于在 Windows 容器上使用 ADD 命令的正确语法。我看不出这两个问题有何关联,关于该主题的已批准答案甚至不适用于我的情况。
显然,问题是 Docker 不支持绝对路径 作为输入路径。
我终于能够通过将 "Bar"-文件夹与 Docker 文件放在同一目录中然后在 Docker 中使用以下 ADD 语句来使其工作文件:
ADD Bar C:/Bar/
如果我记错了,可以使用绝对路径作为源路径,请指正