Dockerfile: 1行で複数の環境変数を設定する 質問する

Dockerfile: 1行で複数の環境変数を設定する 質問する

中間イメージを最小限に抑えるために、環境変数を次のように 1 行で設定できるという印象を受けました。

FROM alpine:3.6
ENV RUBY_MAJOR 2.4 \
    RUBY_VERSION 2.4.1 \
    RUBY_DOWNLOAD_SHA256 4fc8a9992de3e90191de369270ea4b6c1b171b7941743614cc50822ddc1fe654 \
    RUBYGEMS_VERSION 2.6.12 \
    BUNDLER_VERSION 1.15.3

ただし、このスニペットに基づいてコンテナーを実行して呼び出すと、# set |grep RU変数は個別に割り当てられるのではなく、単一の文字列に結合されていることがわかります。

RUBY_MAJOR='2.4     RUBY_VERSION 2.4.1     RUBY_DOWNLOAD_SHA256 4fc8a9992de3e90191de369270ea4b6c1b171b7941743614cc50822ddc1fe654     RUBYGEMS_VERSION 2.6.12     BUNDLER_VERSION 1.15.3'

ただし、以下のように各変数を明示的に設定すると、期待どおりの出力が得られ、変数を呼び出すときにエラーは発生しません。

ENV RUBY_MAJOR 2.4
ENV RUBY_VERSION 2.4.1
ENV RUBY_DOWNLOAD_SHA256 4fc8a9992de3e90191de369270ea4b6c1b171b7941743614cc50822ddc1fe654
ENV RUBYGEMS_VERSION 2.6.12
ENV BUNDLER_VERSION 1.15.3

質問:環境変数の設定を 1 行にまとめることは可能ですか? 可能であれば、どのようにすればよいですか? また、それは良い方法でしょうか?

ベストアンサー1

環境を指定するには2つの形式があります。単一の変数が必要な場合は、以下の形式を使用します。

ENV X Y

これにより、Xは次のように割り当てられます。Y

ENV X Y Z

これにより、Xは次のように割り当てられます。Y Z

複数の環境変数を割り当てる必要がある場合は、他の形式を使用します。

ENV X=Y Z=A

これにより、XはY、Zは に割り当てられますADockerfile

FROM alpine:3.6
ENV RUBY_MAJOR=2.4 \
    RUBY_VERSION=2.4.1 \
    RUBY_DOWNLOAD_SHA256=4fc8a9992de3e90191de369270ea4b6c1b171b7941743614cc50822ddc1fe654 \
    RUBYGEMS_VERSION=2.6.12 \
    BUNDLER_VERSION=1.15.3

RUN env

おすすめ記事