Docker 容器使用 python2.7 抛出错误

问题描述 投票:0回答:1

这是我的 Dockerfile:

FROM node:20 AS node-stage
RUN npm install -g ts-node

#FROM python:3.11
FROM python:2.7
COPY --from=node-stage . .

它抛出以下错误:

=> ERROR [stage-1 2/2] COPY --from=node-stage . .                                                                                                        0.1s
------
 > [stage-1 2/2] COPY --from=node-stage . .:
------
Dockerfile:6
--------------------
   4 |     #FROM python:3.11
   5 |     FROM python:2.7
   6 | >>> COPY --from=node-stage . .
   7 |     
--------------------
ERROR: failed to solve: cannot replace to directory /var/lib/docker/overlay2/uv99gn6qcbue5nvqe07ebh8nb/merged/bin with file

使用 python3,代码运行良好。为什么我会出现这个错误?

我尝试添加 --no-cache 来构建命令,但没有帮助。

UPD:我将最后一个命令替换为

COPY --from=node-stage /usr/local/bin/ts-node /usr/local/bin/ts-node

根据 ChatGPT 的建议,它解决了问题。但我还是不明白为什么。

docker python-2.7
1个回答
0
投票

如果确实如此,那么使用

COPY --from=node-stage . .
,您将尝试从
node-stage
构建阶段复制所有内容,包括根目录和所有内容,所以难怪它会失败。如果您真的想拥有一切,那么根本不要使用构建阶段。

您指定的更新命令

COPY --from=node-stage /usr/local/bin/ts-node /usr/local/bin/ts-node
更加理智,因为它指定了要复制的单个文件夹。

有关多阶段构建的更多信息,请参阅 https://docs.docker.com/build/building/multi-stage/

© www.soinside.com 2019 - 2024. All rights reserved.