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 语句的规则?
答案1
最有可能发生变化的是您的基本 Docker 映像。最近的 Linux 发行版已将/bin
目录替换为符号链接。您的错误和解决方案与这样的链接/bin -> /usr/bin
一致。/
COPY --from=sqitch-build /app /
失败,因为 Docker 不会通过符号链接复制/app/bin
(目录) 。/bin
COPY --from=sqitch-build /app/bin /bin
成功是因为 Docker 将按照目标上的符号链接/bin
将源复制/app/bin
到目标中/usr/bin
。
答案2
我遇到了同样的问题,问题是我没有设置工作目录在 Dockerfile 中
Python 项目中使用该运算符的示例:
FROM python:latest
WORKDIR /app