【问题标题】:If statement inside of Makefile to detect docker image exist and if so delete it如果 Makefile 中存在检测 docker 镜像的语句,如果存在则删除它
【发布时间】:2021-12-04 18:08:23
【问题描述】:

我在 Makefile 中有一个简单的 if 语句,如果 docker 镜像存在但它不起作用,则删除它。注意日志文件图像存在,但是当我执行make clean if 语句失败时。

NAME=program1

all: .docker-build
    docker run ${NAME} make all

.docker-build:
    docker build . -t ${NAME}
    @echo "" > .docker-build

run-%: .docker-build
    docker run ${NAME} make $*

clean:
ifeq ($(docker images -q ${NAME} 2> /dev/null), "")
    docker image rm -f ${NAME}
endif
    @rm -f .docker-build

日志(注意图像存在,但如果make clean 内的语句失败):

➜  dockerfile-test docker images -q program1 2> /dev/null
5ee4797b91ad
➜  dockerfile-test make clean                            
rm -f .docker-build

【问题讨论】:

    标签: makefile


    【解决方案1】:

    这个:

    ifeq ($(docker images -q ${NAME} 2> /dev/null), "")
    

    扩展名为 docker images -q program1 2> /dev/null 的 make 变量,该变量不存在,因此扩展为空字符串,然后将其与两个字符的字符串 "" 进行比较,它永远不会匹配。

    你的意思可能是:

    ifeq ($(shell docker images -q ${NAME} 2> /dev/null),)
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 2013-11-16
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多