【问题解决】stat /var/lib/docker/tmp/docker-builder258037372/xx/xx/xx/default.conf: no such file or direct

问题描述:该问题是在构建vue项目镜像的过程中出现的,详细报错如下

ADD failed: stat /var/lib/docker/tmp/docker-builder258037372/xx/xx/xx/default.conf: no such file or directory

错误原因:

出现这个问题的根本原因在要ADD源文件没有加载到上下文context中,或者加入的路径不对。使用docker build命令构建镜像的时候Dockerfile中ADD命令后的源文件取的是当前路径下的,比如default.conf就放在运行docker build命令的目录(实质上就是dockerfile存在路径)下,则ADD命令后应该使用相对路径,若使用绝对路径就会导致上下文路径不对报错。

# 构建镜像过程中ADD(或COPY)命令后的源文件(不得在Dockerfile文件存在目录的上级目录)会拼接到如下的上下文中
/var/lib/docker/tmp/docker-builderxxx/+源文件位置

本人在dockerfile文件中键入错误指令如下

#在目标文件存在目录下运行docker build命令,docker在运行ADD指令的时候会在/var/lib/docker/tmp/docker-builderxxx/xx/xx/xx/路径下找default.conf文件,而实际上default.conf文件不在这个路径下,真正的位置在 /var/lib/docker/tmp/docker-builderxxx/default.conf
ADD /xx/xx/xx/default.conf /etc/nginx/conf.d/

问题解决:

#使用dockerfile存在目录,要使用的源文件相对路径,比如dockerfile文件在/A路径下(前提条件),源文件a.conf也在/A路径下,则直接ADD a.conf  ... 即可,若a.conf在/A/B路径下,则ADD指令后源文件位置应为/B/a.conf
ADD default.conf /etc/nginx/conf.d/

上下文路径,是指 docker 在构建镜像,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包。

解析:由于 docker 的运行模式是 C/S。我们本机是 C,docker 引擎是 S。实际的构建过程是在 docker 引擎下完成的,所以这个时候无法用到我们本机的文件。这就需要把我们本机的指定目录下的文件一起打包提供给 docker 引擎使用。

如果未说明最后一个参数,那么默认上下文路径就是 Dockerfile 所在的位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猿架构

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值