docker - Makefile无法执行sudo docker kill

标签 docker makefile

我正在尝试执行下一个Makefile,但是当我运行docker kill时,它失败了,因为没有检测到“$(sudo docker ps -q)”,或者它没有执行这部分。

我有下一个Makefile:

.PHONY: kill all services farr-api farr-ingest farr-from-on-premise farr-real-time-processing

farr-api:
        cd apis/1api && sudo docker-compose up -d

farr-ingest:
        cd apis/2ingest && sudo docker-compose up -d

farr-from-on-premise:
        cd apis/3onpremise && sudo docker-compose up -d

farr-real-time-processing:
        cd apis/4realtimeprocessing && sudo docker-compose up -d

services:
        cd services && sudo docker-compose up -d

all: services farr-from-on-premise farr-real-time-processing farr-ingest farr-api

kill: 
       sudo docker kill $(sudo docker ps -q)

当我运行make kill时,它将引发下一个错误:
   sudo docker kill 
"docker kill" requires at least 1 argument(s).
See 'docker kill --help'.

Usage:  docker kill [OPTIONS] CONTAINER [CONTAINER...]

Kill one or more running containers
make: *** [kill] Error 1

看起来Makefile无法检测到“$”。
但是,如果我手动运行sudo docker kill $(sudo docker ps -q),它可以正常工作。

最佳答案

目标应如下所示:

kill:
    for c in $$(sudo docker ps -q); do sudo docker kill $$c; done

更新:
原来docker kill可以将多个容器用作参数,因此仅转义美元就足以杀死所有容器
kill:
    sudo docker kill $$(sudo docker ps -q)

关于docker - Makefile无法执行sudo docker kill,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40716035/

相关文章:

Docker-compose 卷路径在编辑后不会改变

docker - 在 Docker run 命令中使用 --reset 和注册标记?

c++ - undefined reference to with inheritance, makefile 问题?

c - Makefile 复杂化错误。未定义的引用 C 编程

c++ - 如何在 Windows 上使用 g++ 编译器和 Eigen 库进行编译

postgresql - 通过 Jira 容器连接到 Postgres 容器

java - JVM native 内存跟踪如何限制类元数据大小

makefile - GNU Make 的多通配符模式规则

docker - docker-compose尝试运行sh脚本(npm/ng serve)但找不到目录

makefile:删除重复的单词而不进行排序