首页 > 解决方案 > 为什么dockerfile中的双重'COPY'会出错

问题描述

出于某种原因,当我构建我的 dockerfile 时,我收到了这个错误:

“步骤 9/11:复制 --from=builder ./usr/src/app/dist /usr/app/dist 无法复制文件:lstat /var/lib/docker/overlay2/d16c06f4e33e70fea8e03cfe566fe72a763bd1949b67b64603937758fdf7fe1f/merged/usr/app/ dist:不是目录”

但是,如果我注释掉其中一个“复制”,它可以正常工作(不管哪一个)这里到底出了什么问题?

我的dockerfile如下:

FROM node:latest as builder
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build:ssr

FROM node:latest
COPY --from=builder /usr/src/app/package.json /usr/app
COPY --from=builder /usr/src/app/dist /usr/app/dist
WORKDIR /usr/app
CMD [ "npm", "run", "serve:ssr" ]

标签: dockerdockerfile

解决方案


问题是由这一行引起的:

COPY --from=builder /usr/src/app/package.json /usr/app

在这里,您将复制/usr/src/app/package.json/usr目录并命名package.jsonapp.

指定app不是文件名。这是一个目录。使用以下

COPY --from=builder /usr/src/app/package.json /usr/app/

推荐阅读