【问题标题】:Copy several directories to another directory将几个目录复制到另一个目录
【发布时间】:2018-10-02 08:57:55
【问题描述】:

如何将多个目录复制到 docker 中的目标目录?我不想复制目录内容,而是复制整个目录结构。

COPYADD 命令复制目录内容,使结构变平,这是我不想要的。也就是说,如果这些是我的来源:

.
├── a
│   ├── aaa.txt
│   └── uuu.txt
├── b
│   ├── ooo.txt
│   └── ppp.txt
└── c
    └── jjj.txt

我希望将其部署到 docker 映像:

code/
├── a
│   ├── aaa.txt
│   └── uuu.txt
├── b
│   ├── ooo.txt
│   └── ppp.txt
└── c
    └── jjj.txt

我知道我可以做到:

ADD a /code/a
ADD b /code/b
ADD c /code/c

但这与 linux cp 命令相比,太冗长了。它还会创建不必要的图层。

有没有更好的办法?

【问题讨论】:

    标签: docker copy cp


    【解决方案1】:

    你可以这样做:

    COPY ./ /code/
    

    它会将当前文件夹中的所有内容复制到图像的 /code 文件夹中。

    那么你可以创建 .dockerignore 文件来防止添加其他文件/目录然后 abc。例如 def 是当前文件夹中不应出现在结果图像中的其他目录,然后是 的内容.dockerignore 文件看起来像:

    Dockerfile*
    d
    e
    f
    

    这种方法的缺点是它还会将 .dockerignore 复制到 /code 文件夹中。

    【讨论】:

    • 谢谢,但这不符合我的需要。我想手动指定要复制的目录。在当前文件夹中,有很多东西与 docker 镜像无关。
    • @dangonfast 我明白了,但恐怕这不可能通过一个COPYADD 命令来实现。
    • 您使用.dockerignore 的解决方法可能是一个不错的折衷方案。我会试一试的。
    • @dangonfast 是的,你准确地命名了它 - 它不是完美的解决方案,但只是解决方法;-)
    猜你喜欢
    • 2014-07-18
    • 2013-01-11
    • 2011-09-07
    • 2012-09-13
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 2017-11-18
    相关资源
    最近更新 更多