多阶段构建无法从上一阶段复制-找不到文件

时间:2018-12-27 10:21:55

标签: docker

我的docker文件如下:

FROM node:8 as builder
WORKDIR /usr/src/app
COPY ./src/register_form/package*.json .
RUN npm install
COPY ./src/register_form .
RUN  yarn build

FROM tensorflow/tensorflow:1.10.0-gpu-py3
COPY --from=builder /usr/src/app/register_form/build/index.html /app/src/
WORKDIR /app
ENTRYPOINT ["python3"]
CMD ["/app/src/main.pyc"]

但是,它无法从builder阶段复制index.html。尽管当我在第一阶段列出文件夹时,文件就在那里。

错误是:

Step 8/22 : COPY --from=builder ./register_form/build/ /app/src/

COPY failed: stat /var/lib/docker/overlay2/5470e05501898502b3aa437639f975ca3e4bfb5a1e897281e62e07ab89866304/merged/register_form/build: no such file or directory

如何解决此问题-COPY --from = builder docker命令?

1 个答案:

答案 0 :(得分:2)

我认为您在滥用COPY命令。正如文档所述:

  

如果src是目录,则目录的全部内容为   复制,包括文件系统元数据。

     

注意:目录本身不会被复制,只是其内容被复制。

因此,您的命令COPY ./src/register_form .不会在容器中创建register_form文件夹,而是复制所有内容。您可以尝试添加:

RUN ls .

确认您的Dockerfile

@BMitch在注释中注意到,您可以显式设置目标文件夹名称以实现预期的结果:

COPY ./src/register_form/ register_form/