1. ホーム

[解決済み】Dockerfileで環境変数の値を取得する

2022-03-27 12:16:13

質問

Rubyアプリのコンテナを構築しています。私のアプリの設定は、環境変数に含まれています(アプリの内部で、次のように読み込まれます)。 dotenv ).

その設定変数の1つに、アプリの公開IPがあり、内部でリンクを作るのに使われています。 このIPをコンテナ内の127.0.0.1に向けるdnsmasqエントリーを追加して、コンテナ化されていないかのようにアプリのリンクをフェッチできるようにする必要があるんだ。

そのため、私は ENV で、環境変数をコンテナに渡します。

いくつか試してみました。

ENV REQUEST_DOMAIN $REQUEST_DOMAIN
ENV REQUEST_DOMAIN `REQUEST_DOMAIN`

環境変数の値ではなく、すべて"REQUEST_DOMAIN"文字列を渡しますが。 ホストマシンからコンテナへ環境変数の値を渡す方法はあるのでしょうか?

解決方法は?

を使用する必要があります。 ARG ディレクティブ をDockerfileに追加してください。

<ブロッククオート

ARG 命令は、ビルド時にユーザーが docker build コマンドで builder に渡す変数を定義するものです。 --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] が消費されませんでした。