【问题标题】:Docker COPY and keep directoryDocker COPY 并保留目录
【发布时间】:2018-01-13 04:23:38
【问题描述】:

需要在我的 Dockerfile 中复制多个目录。目前,我正在做:

COPY dir1 /opt/dir1
COPY dir2 /opt/dir2
COPY dir3 /opt/dir3

我希望将它们合并到一个语句中,一次性指定所有来源。但是,通过这种方式复制了 内容,我丢失了 dir1dir2dir3 结构:

COPY dir1 dir2 dir3 /opt/

在这种情况下相同:

COPY dir1/ dir2/ dir3/ /opt/

有什么方法可以用一行来实现吗?

【问题讨论】:

标签: docker dockerfile


【解决方案1】:

你应该考虑ADD而不是COPY:见Dockerfile ADD

如果<src> 是采用可识别压缩格式(identity、gzip、bzip2 或 xz)的本地 tar 存档,则将其解压缩为目录。

这意味着您可以将 docker 构建步骤包装到一个脚本中,该脚本首先是 tar -cvf dirs.tar dir1 dir2 dir3

然后你的 Dockerfile 可以ADD dirs.tar:你会在你的镜像中找到你的文件夹。

另见Dockerfile Best Practices: ADD or COPY

【讨论】:

  • 诚然,我希望有更简单的东西,但是:有趣的想法,谢谢!
  • @qqilihq 另一种选择是让你的本地文件夹位于一个公共父文件夹中,准备好COPY'ed,一旦复制,通过 Dockerfile 中的RUN mv 命令移动到它们的最后的地方。
  • @VonC 这个解决方案在各个方面都更好。
猜你喜欢
  • 2021-01-17
  • 2019-08-07
  • 2022-11-23
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
  • 2017-07-24
  • 2018-05-26
相关资源
最近更新 更多