我正在尝试使用Makefile创建Docker映像,并遵循我的Makefile中的内容
NA
它会引发错误,如下所示:
NAME := bluehubs/bluehubs
TAG := $(shell git log -1 --pretty=%H)
IMG := ${NAME}:${TAG}
LATEST := ${NAME}:latest
build:
$(info $$IMG is [${IMG}])
$(info $$LATEST is [${LATEST}])
docker build -t ${IMG} .
答案 0 :(得分:1)
make目标build:
的命令可能不是用 Tab 缩进,而是带有空格。这是Makefiles的常见错误,但是在这种特殊情况下,错误消息有点奇怪。
线条
$(info ...)
在缩进空格但行时似乎可以工作
docker build -t ${IMG} .
缩进不正确的扩展为
docker build -t bluehubs/bluehubs:9e8c3566e19cc86fb74b246dee86421a3f6d32bc .
这将导致一个规则,该规则将目标docker
,build
,-t
和bluehubs/bluehubs
定义为依赖于9e8c3566e19cc86fb74b246dee86421a3f6d32bc
和.
< / p>
由于build
是您的默认目标,因此make
会检查其依赖项9e8c3566e19cc86fb74b246dee86421a3f6d32bc
的存在。
要解决此问题,您必须确保配方中的每一行(即要执行的命令)必须以 Tab 字符开头。
在 Tab 后的之后是否有空格并不重要,但是您应该使用对Makefile具有特殊模式的编辑器,或者至少显示是否行以空格或 Tab 缩进。
为避免Makefile中的错误,我建议根本不要使用空格进行缩进。