首页 文章

Docker在上下文之后遵循符号链接

提问于
浏览
39

另一个Docker符号链接问题 . 我有一堆文件要复制到我的所有Docker构建中 . 我的目标结构是:

parent_dir
    - common_files
        - file.txt
    - dir1
        - Dockerfile  
        - symlink -> ../common_files

在上面的例子中,我想在我在dir1中构建docker时复制file.txt . 但我不想保留file.txt的多个副本 . 每this link, as of docker version 0.10,docker build必须

按照容器根目录中的符号链接查找ADD构建说明 .

但是当我在Dockerfile中使用这些行中的任何一行构建时,我得到 no such file or directory

ADD symlink /path/dirnameADD symlink/file.txt /path/file.txt

mount选项不会为我解决(跨平台......) . 我试了 tar -czh . | docker build -t 没有成功 .

有没有办法让Docker遵循符号链接并将common_files / file.txt复制到构建的容器中?

3 回答

  • 39

    这是不可能的,也不会实施 . 请看discussion on github issue #1676

    我们不允许这样做,因为它不可重复 . 机器上的符号链接与我的机器不同,相同的Dockerfile会产生两种不同的结果 . 同时使用/ etc / paasswd的符号链接会导致问题,因为它会链接主机文件而不是本地文件 .

  • 0

    对于有此问题的其他人,请see this link . 我个人选择了"build a common base image"解决方案,它的工作非常出色 .

  • 3

    一种可能性是在父目录中运行构建,具有:

    $ docker build [tags...] -f dir1/Dockerfile .
    

    (或者等效地,在子目录中)

    $ docker build  [tags...] -f Dockerfile ..
    

    Dockerfile必须配置为使用适当的路径进行复制/添加 . 根据您的设置,您可能希望父级中的 .dockerignore 省略您不希望将其放入上下文中的内容 .

相关问题