引用 Dockerfile 中包含换行符的文件名
Refer to filename containing newline in Dockerfile
我正在尝试将 COPY
命令与包含换行符的目录名称一起使用,我尝试使用 \n
、\x0a
或文字换行符来编写它,但是 docker 没有找到任何这些方法的目录,但如果我将它重命名为没有换行符,它确实找到了它。 docker 文档似乎也没有提到这一点。我怎样才能让它工作?
最小示例:
$ touch $'foo\nbar'
$ echo -e 'FROM busybox\nCOPY "foo\nbar" /tmp/\nCMD /bin/sh' >|Dockerfile
$ docker build .
Sending build context to Docker daemon 8.192kB
Step 1/3 : FROM busybox
---> 020584afccce
Step 2/3 : COPY "foo\nbar" /tmp/
COPY failed: stat /var/lib/docker/tmp/docker-builder128029906/foo\nbar: no such file or directory
以下似乎有效:
ADD ["\n.txt", "\n.txt"]
看起来 \r
、\b
、\n
有效,但 \x**
或 \e
无效。我有 Docker 版本 19.03.5-ce,内部版本 633a0ea838。我找不到任何关于这个的参考,所以如果有人找到它并看到这个答案,请随时编辑它。
我正在尝试将 COPY
命令与包含换行符的目录名称一起使用,我尝试使用 \n
、\x0a
或文字换行符来编写它,但是 docker 没有找到任何这些方法的目录,但如果我将它重命名为没有换行符,它确实找到了它。 docker 文档似乎也没有提到这一点。我怎样才能让它工作?
最小示例:
$ touch $'foo\nbar'
$ echo -e 'FROM busybox\nCOPY "foo\nbar" /tmp/\nCMD /bin/sh' >|Dockerfile
$ docker build .
Sending build context to Docker daemon 8.192kB
Step 1/3 : FROM busybox
---> 020584afccce
Step 2/3 : COPY "foo\nbar" /tmp/
COPY failed: stat /var/lib/docker/tmp/docker-builder128029906/foo\nbar: no such file or directory
以下似乎有效:
ADD ["\n.txt", "\n.txt"]
看起来 \r
、\b
、\n
有效,但 \x**
或 \e
无效。我有 Docker 版本 19.03.5-ce,内部版本 633a0ea838。我找不到任何关于这个的参考,所以如果有人找到它并看到这个答案,请随时编辑它。