当我执行步骤8/10时,sudo docker build -t test -f 7.1/Dockerfile . docker失败:
Step 8/10 : ADD etc/php /usr/local/etc/php
ADD failed: file not found in build context or excluded by .dockerignore: stat etc/php: file does not exist我不明白。etc/php被符号链接到另一个目录。这不是应该行得通吗?
如果我执行ls -latr etc/php,我会得到这样的结果:
lrwxrwxrwx 1 scbn scbn 43 Sep 11 17:48 etc/php -> /home/neubert/devops/containers/common/etc/php如果我执行cd etc/php && ls -latr,我会得到这样的结果:
total 84
drwxr-xr-x 2 scbn scbn 4096 Jan 3 2021 conf.d
drwxr-xr-x 5 scbn scbn 4096 Jan 3 2021 ..
-rw-r--r-- 1 scbn scbn 70125 Jan 26 2021 php.ini
drwxr-xr-x 3 scbn scbn 4096 Jan 26 2021 .发布于 2021-09-12 00:19:39
$ docker build --帮助
用法: docker构建选项路径| URL |-
在这里,PATH | URL | -是所谓的构建上下文,您通常使用.,但它也可以是其他路径。当docker构建时,它将压缩build context中的所有内容,然后将其传递给docker engine。因此,Dockerfile中的COPY只能引用build context中的项。
对于您的场景:
lrwxrwxrwx 1 scbn scbn 43 Sep 11 17:48 etc/php -> scbn
上面我猜符号链接etc/php在你的构建上下文中,而真正的文件夹/home/neubert/devops/containers/common/etc/php不在,所以构建失败,你必须以某种方式保证真正的目标也在build context中。
https://stackoverflow.com/questions/69147559
复制相似问题