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
但是,运行基于此代码段的容器并调用,# 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
ENX 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
-
在Dockerfile中获取环境变量值
2021-02-01 关注 0 浏览212 1答案
-
在 Dockerfile 中,如何更新 PATH 环境变量?
2022-03-22 关注 0 浏览95 1答案
-
在Dockerfile中,如何更新PATH环境变量?
2021-02-01 关注 0 浏览262 1答案
-
获取 Dockerfile 中的环境变量值
2022-05-26 关注 0 浏览347 1答案
-
将主机环境变量传递给dockerfile
2021-02-01 关注 0 浏览85 1答案
-
在C中设置环境变量
2021-02-02 关注 0 浏览139 1答案
-
在virtualenv中设置环境变量
2021-01-29 关注 0 浏览71 1答案
-
Javadoc在一行上有多个变量
2021-01-29 关注 0 浏览103 1答案
-
在python脚本中设置环境变量
2021-01-29 关注 0 浏览69 1答案
-
我可以在Dockerfile USER语句中使用环境变量吗?
2021-02-01 关注 0 浏览151 1答案