ドキュメント によれば、フラグ--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"に設定します
どのようにして複数の引数を定義できるのでしょうか。
各引数に--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 .
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
私はこの問題に遭遇していました、それで私は私が将来誰か(私自身)を助けることを望みます。
複数のARGも必要なのは残念です。そのため、複数のレイヤーが作成され、ビルドが遅くなります。また、現在、複数のARGを設定するために 方法はありません と考えている人もいます。
ビルド中に環境変数を使いたい場合。ユーザー名とパスワードを設定すると言うことができます。
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