波浪线扩展在Docker的COPY命令中不起作用。

18

我有一个 Dockerfile,其中有以下的一行:

COPY *.zip ~user1

用户user1已经存在并且有一个主目录(即/home/user1)。当然,目标是将zip文件复制到该用户的主目录中,但是上述操作的结果是将zip文件复制到名为/~user1的文件中。

以下内容可以正常工作:

COPY *.zip /home/user1

这是Docker的一个错误还是与波浪线扩展相关的限制,我不知道吗?

在Mac上使用Docker 1.13.0。


1
波浪号扩展是各种Unix/Linux shell的一个功能。复制命令不会被任何这些shell处理。 - BMitch
如果您在使用docker compose命令时使用波浪号引用用户目录,则甚至无法正常工作。请参见:https://github.com/docker/docker.github.io/pull/8538 - Levent Divilioglu
1个回答

20

不支持 COPY 的波浪线展开。

来自 COPY 文档

dest 是一个绝对路径,或者是相对于 WORKDIR 的路径,在目标容器中将源复制到其中。

示例:

COPY test relativeDir/   # adds "test" to `WORKDIR`/relativeDir/
COPY test /absoluteDir/  # adds "test" to /absoluteDir/

5
他们可能应该为此添加一个“已知问题”部分。看起来这是一个普遍的问题。 - Duncan Calvert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接