Docker 错误:无法解决:复制到非目录时无法复制到

Docker 错误:无法解决:复制到非目录时无法复制到

如同这个问题,但从以前的FROM目标复制时(来源):

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

相关内容