私はRubyアプリ用のコンテナを構築しています。アプリの設定は環境変数(アプリ内でロードされる)に含まれています。ドテンヴ)。
これらの構成変数の 1 つは、リンクを作成するために内部的に使用されるアプリのパブリック IP です。コンテナー内でこの IP を 127.0.0.1 にポイントする dnsmasq エントリを追加して、コンテナー化されていないかのようにアプリのリンクを取得できるようにする必要があります。
ENV
そのため、コンテナに環境変数を渡す Dockerfile を設定しようとしています。
いくつか試してみました。
ENV REQUEST_DOMAIN $REQUEST_DOMAIN
ENV REQUEST_DOMAIN `REQUEST_DOMAIN`
ただし、すべては環境変数の値ではなく、「REQUEST_DOMAIN」文字列を渡します。ホスト マシンからコンテナーに環境変数の値を渡す方法はありますか?
ベストアンサー1
あなたはARG
指令この目的のために用意された Dockerfile 内にあります。
この
ARG
命令は、フラグを使用して docker build コマンドでビルド時にユーザーがビルダーに渡すことができる変数を定義します--build-arg <varname>=<value>
。
したがって、Dockerfileには次の行が含まれます。
ARG request_domain
またはデフォルト値を希望する場合:
ARG request_domain=127.0.0.1
これで、Dockerfile 内でこの変数を参照できるようになりました。
ENV request_domain=$request_domain
次のようにコンテナを構築します。
$ docker build --build-arg request_domain=mydomain Dockerfile
注 1:ARG
Dockerfile で を参照しているが で除外している場合、イメージはビルドされません--build-arg
。
注 2:ユーザーが Dockerfile で定義されていないビルド引数を指定した場合、ビルドでは警告が出力されます。
[警告] 1 つ以上のビルド引数 [foo] が消費されませんでした。