创建Docker映像时Makefile错误

时间:2019-03-04 16:45:43

标签: linux docker makefile gnu-make

我正在尝试使用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} .

1 个答案:

答案 0 :(得分:1)

make目标build:的命令可能不是用 Tab 缩进,而是带有空格。这是Makefiles的常见错误,但是在这种特殊情况下,错误消息有点奇怪。

线条

$(info ...)

在缩进空格但行时似乎可以工作

docker build -t ${IMG} .

缩进不正确的扩展为

docker build -t bluehubs/bluehubs:9e8c3566e19cc86fb74b246dee86421a3f6d32bc .

这将导致一个规则,该规则将目标dockerbuild-tbluehubs/bluehubs定义为依赖于9e8c3566e19cc86fb74b246dee86421a3f6d32bc. < / p>

由于build是您的默认目标,因此make会检查其依赖项9e8c3566e19cc86fb74b246dee86421a3f6d32bc的存在。

要解决此问题,您必须确保配方中的每一行(即要执行的命令)必须以 Tab 字符开头。

Tab 后的之后是否有空格并不重要,但是您应该使用对Makefile具有特殊模式的编辑器,或者至少显示是否行以空格或 Tab 缩进。

为避免Makefile中的错误,我建议根本不要使用空格进行缩进。