私のドッカーファイル、はという変数を定義したいと思います。後でDockerfileで使用します。Dockerfileで変数を定義する方法は?
私はENV
命令を認識していますが、これらの変数を環境変数にする必要はありません。
は、Dockerfileスコープで変数を宣言する方法はありますか?私の知る限り
私のドッカーファイル、はという変数を定義したいと思います。後でDockerfileで使用します。Dockerfileで変数を定義する方法は?
私はENV
命令を認識していますが、これらの変数を環境変数にする必要はありません。
は、Dockerfileスコープで変数を宣言する方法はありますか?私の知る限り
あなたはARG
を使用することができますが - https://docs.docker.com/engine/reference/builder/#arg
を参照してください
ARG
命令は、ユーザーが--build-arg <varname>=<value>
フラグを使用してdocker build
コマンドを使用して、ビルダーに ビルド時に渡すことができる変数を定義します。ユーザーがビルド 引数をDockerfileで定義されていないと指定した場合、ビルドは エラーを出力します。
、唯一ENV
は変数がDockerfileによって解釈されるよう(ENV
文で宣言された)「Environment replacement」
環境変数は、特定の命令でも使用することができるで述べたように、ということができます。
Dockerfileの各行に対して作成された新しいコンテナごとに、docker build
で再宣言するためには、環境変数でなければなりません。
つまり、これらの変数はDockerfileではなく、Dockerfile行用に作成されたコンテナ内で直接解釈されるため、環境変数を使用します。
この日、私はARG
(docker 1.10+, and docker build --build-arg var=value
)とENV
の両方を使用しています。
ARG
を単独で使用すると、実行時に変数が表示されず、であることを意味します。
マイDockerfileが通常持っている:あなたのケースでは
ARG var
ENV var=${var}
、ARG
が十分である:私はHTTP_PROXY変数を設定するための一般的に使用し、そのドッキングウィンドウのビルドは、ビルド時にインターネットにアクセスするために必要です。
変数が同じRUN
命令内で再使用される場合は、単にシェル変数を設定することができます。私は彼らがofficial Ruby Dockerfileでこれにどのようにアプローチしたか、本当に好きです。
あなたはARGを使用することができます - https://docs.docker.com/engine/reference/builder/#arg – lumos0815
@ lumos0815を参照してください、私はそれが古いポストだにもかかわらず、(あなたがあなたの答えとして、それを投稿するべきだと思います。後世のために)それはOPが求めているものなのです。 – shriek