2017-02-17 11 views
39

Zgodnie z documentation, możliwe jest zdefiniowanie wielu argumentów dla flagi --build-arg, ale nie mogę się dowiedzieć, jak to zrobić. Próbowałem:kompilacja dockera z --build-arg z wieloma argumentami

docker build -t essearch/ess-elasticsearch:1.7.6 --build-arg number_of_shards=5 number_of_replicas=2 --no-cache . 

=> Zwraca błąd.

Próbowałem również:

docker build -t essearch/ess-elasticsearch:1.7.6 --build-arg number_of_shards=5,number_of_replicas=2 --no-cache . 

=> To ustawia jedną zmienną, number_of_shards, do wartości "5, number_of_replicas = 2"

Każdy pomysł w jaki sposób można zdefiniować wiele argumentów?

Odpowiedz

77

Używaj --build-arg z każdym argumentem.

Jeśli mijają dwa argumenty następnie dodać --build-arg z każdego argumentu typu:

docker build -t essearch/ess-elasticsearch:1.7.6 --build-arg number_of_shards=5 --build-arg number_of_replicas=2 --no-cache . 
+0

lame, ale prawda! –

+3

Dzięki za wyczyszczenie tego. "--help" na tym jest szczególnie mylące: '--build-arg list'. To nie jest lista! – cowlinator

15

Powyższa odpowiedź przez pl_rock jest poprawna, jedyne co chciałbym dodać to oczekiwać ARG wewnątrz Dockerfile jeśli nie ty nie będzie miał do niego dostępu. Więc jeśli robisz

docker build -t essearch/ess-elasticsearch:1.7.6 --build-arg number_of_shards=5 --build-arg number_of_replicas=2 --no-cache . 

Następnie wewnątrz Dockerfile należy dodać

ARG number_of_replicas 
ARG number_of_shards 

biegałam do tego problemu, więc mam nadzieję, że pomoże ktoś (ja) w przyszłości.

+0

dzięki za wzmianka o ARG w pliku Dockerfile –

4

Szkoda, że ​​potrzebujemy również wielu ARG, powoduje to powstawanie wielu warstw i spowalnia tworzenie z tego powodu, a także dla każdego, kto zastanawia się nad tym, że obecnie there is no way służy do ustawiania wielu ARG.

Powiązane problemy