docker build --progress=plain -t app:1.0 .
tar --exclude-from=.dockerignore -cf ctx.tar .
tar -tf ctx.tar | grep app.conf

报 `failed to solve: failed to compute cache key: /conf/app.conf not found`,文件在仓库里确实存在,本机 ls 也看得到,只有构建的时候找不到,换台机器一样,改个忽略规则就好。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,该文件被 .dockerignore 里的通配规则排掉了,构建上下文里根本没有它,算校验和时找不到源文件就直接判失败,这类报错和网络无关。

这次卡住的地方就在「BuildKit cache key 失败」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。

一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。

处理上按这个顺序:先核对 .dockerignore 里的星号规则 看它有没有误伤到配置目录;把构建上下文解出来 看这个文件到底进没进包;排除规则改成显式列目录 别再写宽泛的通配符。

改完只确认一件事:同一份代码重新构建不再报 cache key,配置目录被打进了镜像,容器能正常启动。

作者 9823189