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"]
但是,它无法从构建器阶段复制 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 命令?
解决方案
我认为你在滥用COPY
命令。正如文档中所说:
如果
src
是目录,则复制目录的全部内容,包括文件系统元数据。注意:目录本身没有被复制,只是它的内容。
因此,您的命令COPY ./src/register_form .
不会register_form
在容器中创建文件夹,而是复制所有内容。您可以尝试添加:
RUN ls .
以Dockerfile
确保。
正如@BMitch 在评论中所注意到的,您可以显式设置目标文件夹名称以达到预期的效果:
COPY ./src/register_form/ register_form/
推荐阅读
- javascript - rails 6中没有针对多个路线参数的路线匹配
- wordpress - 如何用产品搜索替换标题中的二十二个 wordpress 模态搜索
- android-studio - 如何从 MainActivity 编辑片段中的 TextView
- python - 在 root 用户启动的 python 程序中以非 root 用户身份调用 os.system
- c++ - 如何在 UE4 中创建亮度滑块
- postgresql - 我可以在全局而不是在每个枚举上应用一次 @Enumerated(EnumType.STRING) 吗?
- python - 在python中打印不可转换为列表的地图对象的结果
- javascript - 尽管有分号,但如何解决分号预期错误?
- python - discord.py - 我的服务器信息命令没有回复
- vuetify.js - 如何在 vue 中使用字体粗细?