2016-11-21 2 views
0

Ich versuche, das nächste Makefile auszuführen, aber wenn ich das Andockfenster ausführen kill es scheitert, weil nicht die "$ (sudo Docker ps -q)" erkennen oder es führt diesen Teil nicht aus .Makefile schlägt fehl Ausführen Sudo Docker Kill

Ich habe die nächste 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) 

Wenn ich make kill laufen wirft es den nächsten Fehler:

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 

Es ist wie von Makefile hat "$" sieht nicht zu erkennen. Aber wenn ich manuell sudo docker kill $ (sudo docker ps -q) es funktioniert gut.

Antwort

1

Das Ziel sollte wie folgt aussehen stellt sich heraus, dass docker kill Arbeiten mit mehreren Behältern als Argumente, so dass nur entkommen Dollar ist genug um alle Behälter zu töten

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

Sorry, mein Problem ist das nächste, ich habe den Post bearbeitet. –

+0

In diesem Fall zählen Sie einfach alle 'ps' Ergebnisse auf. Aber im Allgemeinen ist es nicht gut, sudo in Makefiles zu verwenden. Schließlich wird es Sie bitten, jedes Mal ein Passwort einzugeben (außer Sie sagen Sudo, es nicht zu tun, was die Sicherheit senkt) – avsej

+0

Das sudo docker kill $$ (sudo docker ps -q) funktioniert für mich. Wirklich danke –

0

Versuchen Sie, die Linie auf unter Kill bewegen:

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

UPDATE:

+0

Ich bearbeitet den Beitrag sorry, das ist nicht mein Problem. Danke –