Makefile无法执行sudo docker kill

时间:2016-11-21 08:51:33

标签: docker makefile

我正在尝试执行下一个Makefile,但是当我运行docker时,它会失败,因为我们没有检测到" $(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)它运行正常。

1 个答案:

答案 0 :(得分:2)

目标应如下所示:

import Dollar

let found = $.find(array) { $0.name == "Foo" }

更新: 事实证明kill: for c in $$(sudo docker ps -q); do sudo docker kill $$c; done 使用多个容器作为参数,所以只需转义美元即可杀死所有容器

docker kill