web-dev-qa-db-ja.com

docker - 複数の引数を持つ--build-argでビルド

ドキュメント によれば、フラグ--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"に設定します

どのようにして複数の引数を定義できるのでしょうか。

115
Emilien Brigand

各引数に--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 .
214
pl_rock

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

私はこの問題に遭遇していました、それで私は私が将来誰か(私自身)を助けることを望みます。

57
Javier Perez

複数のARGも必要なのは残念です。そのため、複数のレイヤーが作成され、ビルドが遅くなります。また、現在、複数のARGを設定するために 方法はありません と考えている人もいます。

8
v1adko

ビルド中に環境変数を使いたい場合。ユーザー名とパスワードを設定すると言うことができます。

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

1
Fakabbir Amin