中間イメージを最小限に抑えるために、環境変数を次のように 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は に割り当てられますA
。Dockerfile
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