我正在尝试执行下一个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/