我的印象是环境变量可以设置在一行上,如下所示,以尽量减少中间图像。
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
问题:是否可以将环境变量的设置合并在一行上?如果是这样,我该怎么办?这是一个好的做法吗?
有两种指定环境的格式。如果您需要单个变量,那么您可以使用以下格式
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)