如何将文件复制/添加到Dockerfile中的当前WORKDIR

akh*_*khy 11 docker dockerfile

COPY/ADD语句需要2个参数.如何将任何文件添加到已在基本映像中设置的当前workdir?

FROM company/app
COPY local.conf
Run Code Online (Sandbox Code Playgroud)

当然我可以在COPY之前添加WORKDIR语句来明确声明它.但如果company/app改变工作,那将是有问题的.

akh*_*khy 12

事实证明这很简单.我只需要使用dot复制到当前workdir.

COPY local.conf .
Run Code Online (Sandbox Code Playgroud)

仍然无法弄清楚这是否有一些陷阱.但它只是按预期工作.

  • 那应该是正确的。不要认为有任何问题。您正在使用 WORKDIR 的相对路径,如 [COPY 的文档](https://docs.docker.com/engine/reference/builder/#copy) 中所述 (2认同)

Rtm*_*tmY 5

添加到已接受的答案

COPY 的文档有一些值得特别关注的用例。

其中之一与我们的用例相关:

如果直接或通过使用通配符指定了多个资源,则必须是一个目录,并且必须以斜杠 / 结尾。

因此,对于复制多个文件的情况,目标必须是一个目录/.

FROM company/app
WORKDIR app
COPY *.conf ./ # <-- Here
Run Code Online (Sandbox Code Playgroud)

如果我们写最后一行有:

COPY *.conf .
Run Code Online (Sandbox Code Playgroud)

我们会得到以下错误:

当对多个源文件使用 COPY 时,目标必须是一个目录并以 / 结尾