【问题标题】:Docker image build fails on file addDocker 映像构建在文件添加时失败
【发布时间】:2020-06-05 11:57:38
【问题描述】:

这是我的Dockerfile

FROM debian:latest

LABEL MAINTAINER DINESH

LABEL version="1.0"

LABEL description="First image with Dockerfile & DINESH."

RUN apt-get clean

RUN apt-get update

RUN apt-get install -qy git

RUN apt-get install -qy locales

RUN apt-get install -qy nano

RUN apt-get install -qy tmux

RUN apt-get install -qy wget

RUN apt-get install -qy python3

RUN apt-get install -qy python3-psycopg2

RUN apt-get install -qy python3-pystache

RUN apt-get install -qy python3-yaml

RUN apt-get -qy autoremove

# ** ERROR IS BELOW **
ADD .bashrc /root/.bashrc

ADD .profile /root/.profile

ADD app /app

RUN locale-gen C.UTF-8 && /usr/sbin/update-locale LANG=C.UTF-8

ENV PYTHONIOENCODING UTF-8

ENV PYTHONPATH /app/

当我运行这个命令docker build -t myimage .时,它在下面给出错误。

"Step 17/20 : ADD app /app
ADD failed: stat /var/lib/docker/tmp/docker-builder687980062/.bashrc: no such file or directory"

我已授予上述授予路径的权限,但未解决。请告诉我如何解决它。

【问题讨论】:

    标签: docker docker-compose dockerfile docker-machine


    【解决方案1】:

    首先请确保文件存在于正确的目录中。作为错误提示no such file or directory

    请代替 ADD 尝试使用 COPY 为我工作

    COPY .bashrc /root/ 
    COPY .profile /root/
    

    还要使文件存在于源位置和目标位置是正确的。

    此外,根据最佳实践,您可以合并行并制作单个命令

    RUN apt-get update -yq \
        && apt-get install -y python3-dev build-essential -yq \
        && apt-get install curl -yq \
        && pip install -r requirements.txt \
        && apt-get purge -y --auto-remove gcc python3-dev build-essential
    

    【讨论】:

    • @Dewa 文件是否存在于同一目录中?你在哪里运行命令?
    • 试过但没有运气,遇到同样的问题:复制失败:stat /var/lib/docker/tmp/docker-builder365800500/.bashrc:没有这样的文件或目录
    • 好的,请注意最佳实践指导,非常感谢
    【解决方案2】:

    改为:

    ADD .bashrc /root/ 
    ADD .profile /root/
    ADD app /
    

    来自文档: ADD src ... dest.

    dest 是绝对路径,或者是相对路径 到 WORKDIR,源将被复制到其中 目标容器。

    【讨论】:

    • @Lukaz 我试过了,但它不起作用。得到同样的错误。
    • 我明白了,试试看:ADD ~/.bashrc /root/
    • 使用一次复制而不是添加
    • 同样的错误请参考消息:COPY failed: stat /var/lib/docker/tmp/docker-builder109742057/~/.bashrc: no such file or directory