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:在一行中设置多个环境变量 的全部内容, 来源链接: utcz.com/qa/435834.html

回到顶部