如何使用Docker文件将一层中的多个文件复制到不同位置?

时间:2018-07-20 15:43:37

标签: docker dockerfile docker-copy

是否可以将多个文件复制到Dockerfile中的不同位置?

我要去的地方:

COPY outputs/output/build/.tools /root/.tools
COPY outputs/output/build/configuration /root/configuration
COPY outputs/output/build/database/postgres /root/database/postgres

我尝试了以下方法,但没有任何乐趣:

COPY ["outputs/output/build/.tools /root/.tools","outputs/output/build/configuration /root/configuration","outputs/output/build/database/postgres /root/database/postgres"]

不确定这是否可能。

2 个答案:

答案 0 :(得分:0)

.dockerignore构建上下文目录中创建文件docker。为要复制的根目录创建一个软链接(ln),并在.dockerignore中排除不需要的目录。

对于您来说,您不需要软链接,因为该目录已经在docker构建上下文中。现在,在您不需要的.dockerignore文件中添加目录,例如。如果您不想要bin目录,可以这样做,

# this is .dockerignore file
outputs/output/build/bin*

最后在您的Dockerfile中,

COPY outputs/output/build/ /root/

详细信息为here

答案 1 :(得分:0)

您似乎正在尝试进行bash样式[]大括号扩展 RUN命令使用sh而非bash

请参阅此SO文章进行讨论

Bash brace expansion not working on Dockerfile RUN command

或Docker参考

https://docs.docker.com/engine/reference/builder/#/run