COPY --from=sqitch-build /app .
直到最近它开始发出此错误时才工作正常:
ERROR: failed to solve: cannot copy to non-directory: /var/lib/buildkit/runc-overlayfs/cachemounts/buildkit3355209005/bin
我尝试了这个,但得到了同样的错误:
COPY --from=sqitch-build /app /
我不确定它不喜欢什么。COPY
我可以通过为每个子目录单独创建一个来解决这个问题:
COPY --from=sqitch-build /app/lib /lib
COPY --from=sqitch-build /app/bin /bin
但这似乎没有必要。最近 Docker 中是否发生了一些变化,影响了 COPY 语句的规则?
最有可能发生变化的是你的基础 Docker 镜像。最近的 Linux 发行版已
/bin
用符号链接替换了该目录/bin -> /usr/bin
。您的错误和解决方案与/
有这样的链接是一致的。失败是因为 Docker 不会通过符号链接复制
/app/bin
(目录) 。/bin
成功是因为 Docker 将遵循目标上的符号链接
/bin
并将源复制/app/bin
到目标中/usr/bin
。我遇到了同样的问题,问题是我没有在 Dockerfile 中设置WORKDIR
在Python项目中使用该运算符的示例: