複数の引数を指定した--build-argを使用したdocker build


192

ドキュメントによると、フラグに複数の引数を定義することは可能ですが、--build-arg方法がわかりません。私は以下を試しました:

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

=>これはエラーを返します。

私も試しました:

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

=>これは、1つの変数をnumber_of_shards値「5、number_of_replicas = 2」に設定します

複数の引数を定義する方法はありますか?

回答:


355

--build-arg各引数とともに使用します。

2つの引数を渡す場合は、次のよう--build-argに各引数を追加します。

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

62
これを片付けてくれてありがとう。これ--helpについては、特に誤解を招く可能性があります--build-arg list。リストではありません!
カウリネーター2018年

91

pl_rockによる上記の答えは正しいです。私が追加する唯一のものは、アクセスできない場合にDockerfile内のARGを期待することです。だからあなたがしているなら

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

次に、Dockerfile内に追加する必要があります

ARG number_of_replicas
ARG number_of_shards

私はこの問題に遭遇していたので、将来誰か(自分)を助けたいと思っています。


6
あなたも私を助けてくれたので、ありがとう。ARGS後で宣言しなければならないことだけを付け加えましょうFROM
エドアルド2018年

6
すごい!使い方はARGさえで言及されていないdocs.docker.com/engine/reference/commandline/build/...--build-argすることなく、私のために役に立たなかったARG
HeyWatchThis

19

ビルド中に環境変数を使用したい場合。ユーザー名とパスワードを設定するとします。

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

端末コマンド

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


3
これにより、docker historyコマンドを使用してDockerイメージに秘密の値が表示されたままになることに注意してください。
ゲイリー

時々、唯一のトップアンサーが賛成です!しかし、あなたはこれを非常によく説明しました。ありがとうございました!
Dupinder Singh

13

複数のARGも必要なのは残念です。その結果、複数のレイヤーが作成され、そのためにビルドが遅くなります。また、誰もが不思議に思うように、現在、複数のARGを設定する方法はありません

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.