it-swarm.com.de

docker build with --build-arg mit mehreren Argumenten

Laut Dokumentation ist es möglich, mehrere Argumente für das Flag --build-arg zu definieren, aber ich kann nicht herausfinden, wie. Ich habe folgendes versucht:

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

=> Dies gibt einen Fehler zurück.

Ich habe auch versucht:

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

=> Dies setzt eine Variable, number_of_shards, auf den Wert "5, number_of_replicas = 2"

Irgendeine Idee, wie ich mehrere Argumente definieren kann?

136
Emilien Brigand

Verwenden Sie --build-arg mit jedem Argument.

Wenn Sie zwei Argumente übergeben, fügen Sie --build-arg mit jedem Argument wie folgt hinzu:

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

Die obige Antwort von pl_rock ist richtig. Ich würde nur hinzufügen, dass die ARG in der Docker-Datei enthalten ist, wenn Sie keinen Zugriff darauf haben. Also, wenn Sie es tun

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

Dann sollten Sie innerhalb der Dockerfile hinzufügen

ARG number_of_replicas
ARG number_of_shards

Ich bin auf dieses Problem gestoßen und hoffe, dass ich jemandem (mir) in Zukunft helfen kann.

63
Javier Perez

Es ist eine Schande, dass wir auch mehrere ARGs benötigen. Dies führt zu mehreren Ebenen und verlangsamt den Build, und für alle, die sich auch fragen, ist derzeit es gibt keine Möglichkeit , mehrere ARGs festzulegen.

8
v1adko

Wenn Sie Umgebungsvariablen während des Builds verwenden möchten. Nehmen wir an, Sie setzen Benutzername und Passwort.

username= Ubuntu
password= swed24sw

Dockerfile

FROM ubuntu:16.04
ARG SMB_PASS
ARG SMB_USER
# Creates a new User
RUN useradd -ms /bin/bash $SMB_USER
# Enters the password twice.
RUN echo "$SMB_PASS\n$SMB_PASS" | smbpasswd -a $SMB_USER

Terminalbefehl

docker build --build-arg SMB_PASS=swed24sw --build-arg SMB_USER=Ubuntu . -t IMAGE_TAG

4
Fakabbir Amin