2016-11-21 12 views
0

次のMakefileを実行しようとしていますが、ドッカーを実行すると "$(sudo docker ps -q)"が検出されないか、 。Makefileがsudo docker killの実行に失敗する

私は次のMakefileを持っている:私はmake killを実行すると

.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) 

それは、次のエラーがスローされます。

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 

"$" は、メイクファイルで検出されないように見えます。 しかし、私は手動で実行する場合ドッカキル$を(sudoをドッカPS -q)須藤それが正常に動作します。

答えて

1

ターゲットは次のようになります。

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

はUPDATE: は引数として複数のコンテナを持つことdocker kill作品が判明、これだけドルをエスケープすることは十分ですすべての容器を殺すために

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

申し訳ありませんが、私の問題は次のですが、私はポストを編集しました。この場合、 –

+0

はすべての 'ps'結果を列挙します。しかし、一般に、makefileでsudoを使うのは良い習慣ではありません。結局のところ、パスワードを毎回入力するようお願いします(セキュリティを低下させるためにsudoに指示しない限り、セキュリティを低下させます) – avsej

+0

sudo docker kill $$(sudo docker ps -q)は私のために働きます。本当にありがとう –

0

キル以下にラインを移動してみてください:

+0

私は投稿を編集しました申し訳ありませんが、これは私の問題ではありません。おかげ –

関連する問題