Docker多阶段构建 - 复制失败

时间:2018-06-01 20:30:42

标签: reactjs docker dockerfile

我对一个弹出的create-react-app的多阶段Dockerfile存在一些问题。 Dockerfile如下所示:

FROM node:9.6.1 as builder

RUN mkdir /usr/src/app
WORKDIR /usr/src/app

ENV PATH /usr/src/app/node_modules/.bin:$PATH
COPY package.json /usr/src/app/package.json
RUN npm install --silent
COPY . /usr/src/app

RUN npm run build

FROM nginx:1.13.9-alpine
COPY --from=builder /usr/src/app/build /usr/share/nginx/html
EXPOSE 80

Dockerfile成功运行,直到它进入步骤10(COPY),它会抛出以下错误:

COPY failed: stat /var/lib/docker/overlay2/2fc8af4cb8db9777246cae48721d8a93917c73e415a02680f1e3a73c8780b903/merged/usr/src/app/build: no such file or directory

我已经google了,但无法找到明确的答案。有没有人经历过类似的事情?

5 个答案:

答案 0 :(得分:1)

构建应用程序时,它将在另一个硬币容器/图层中构建。您需要先构建应用程序,然后将构建文件夹复制到/ usr / src / app。

所以,这很好:

    <a-marker type='pattern' url='./<path to your .patt>'>

我将删除src和build文件夹,因为这不是必需的,并且可能会暴露应用程序的关键部分。

因此,毫无疑问,对应用程序进行docker化的安全性。

答案 1 :(得分:0)

很难说出来,但是我最好的猜测是“ RUN npm install --silent”失败了,可能是由于网络问题或其他原因,它无法下载您的一个软件包,因此您的构建会失败,并且不会生成构建文件夹。

答案 2 :(得分:0)

我在使用卷时遇到了相同的错误,只是因为项目(显然还有dockerfile)在Users / [currentuser]文件夹之外。在“程序文件”中很容易。从程序文件文件夹ti Users / [currentuser]中移动项目。不知道是不是一样试试看,让我知道

答案 3 :(得分:0)

可能是因为COPY。 / usr / src / app应该在顶级目录中完成,以便在/ usr / src / app中创建构建。做一件事。把这个命令'COPY。 / usr / src / app”(位于WORKDIR / usr / src / app之前),然后将输出内容发布到此处,以便为您提供更好的帮助。

答案 4 :(得分:0)

更干净的方法如下:

FROM node:9.6.1 as builder

WORKDIR /build
ENV PATH /build/node_modules/.bin:$PATH
COPY package.json /usr/src/app/package.json
RUN npm install --silent
COPY . /build/app
RUN npm run build

FROM nginx:1.13.9-alpine
COPY --from=builder /build /usr/share/nginx/html
EXPOSE 80