我正在尝试执行下一个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)它运行正常。
答案 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