我对一个弹出的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了,但无法找到明确的答案。有没有人经历过类似的事情?
答案 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