【问题标题】:Multi-stage build cannot copy from previous stage - File not found多阶段构建无法从前一阶段复制 - 找不到文件
【发布时间】:2018-12-27 22:58:50
【问题描述】:

我的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"]

但是,它无法从构建器阶段复制 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 命令?

【问题讨论】:

    标签: docker


    【解决方案1】:

    我认为你在滥用COPY 命令。正如文档中所说:

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

    注意:目录本身并没有被复制,只是它的内容。

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

    RUN ls .
    

    发送至您的Dockerfile 以确保。

    正如@BMitch 在 cmets 中所注意到的,您可以显式设置目标文件夹名称以达到预期的效果:

    COPY ./src/register_form/ register_form/
    

    【讨论】:

    • 你要的命令是COPY ./src/register_form/ register_form/
    • 非常感谢您的回答。我没有注意到该文件夹​​不是由 COPY 命令创建的。
    猜你喜欢
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    相关资源
    最近更新 更多