Makefile依赖执行异常:构建b时无法找到a-image镜像
问题原因及解决方案
你的问题出在Makefile的目标默认会关联文件/目录:根目录下的a和b是实际存在的目录,Make会认为这些目标已经处于“最新状态”,因此不会执行a对应的构建命令。当构建b时,虽然声明了依赖a,但Make判定a已完成,直接跳过构建a-image,导致Docker找不到本地的a-image,只能尝试去远程仓库拉取,从而触发权限报错。
修复方法
在根目录的Makefile中,把a和b声明为.PHONY伪目标,明确告诉Make这些目标不对应实际文件/目录,每次执行都要运行对应的命令:
.PHONY: all a b all: a b a: make -C a/ all b: a make -C b/ all
修改后执行make all,Make会强制先完成a的镜像构建,再执行b的构建流程,就不会出现找不到a-image的问题了。
内容的提问来源于stack exchange,提问作者Георгий Гуминов
相关产品推荐
相关产品推荐

