如何使用来自父 Docker 文件的环境变量?
How to use environment variable from parent Docker file?
我有两个 Dockerfile Dockerfile.A
和 Dockerfile.B
,其中 Dockerfile.B
使用 FROM 关键字从 Dockerfile.A
继承。在 Dockerfile.A
中,我设置了一个我想在 Dockerfile.B
(PATH) 中使用的环境变量。这可能吗,我该怎么做?
到目前为止,我已经在 Dockerfile.A
中尝试了以下操作:
-
RUN export PATH=/my/new/dir:$PATH
-
ENV PATH=/my/new/dir:$PATH
-
RUN echo "PATH=/my/new/dir:$PATH" >/etc/profile
和Dockerfile.B
中分别是:
只需使用路径中的工具查看它们是否可用(它们不可用)
-
ENV PATH
-
RUN source /etc/profile
我意识到每个 运行 命令都在它自己的环境中执行,这可能就是 ENV 关键字存在的原因,以便可以独立于 运行 命令处理环境。但我不确定这对我的情况意味着什么。
那我该怎么做呢?
对我来说工作正常。
Dockerfile.A
FROM alpine:3.6
ENV TEST=VALUE
建造它。
docker build -t imageA .
Dockerfile.B
FROM imageA
CMD echo $TEST
建造它。
$ docker build -t imageB .
运行它
$ docker run -it imageB
VALUE
我有两个 Dockerfile Dockerfile.A
和 Dockerfile.B
,其中 Dockerfile.B
使用 FROM 关键字从 Dockerfile.A
继承。在 Dockerfile.A
中,我设置了一个我想在 Dockerfile.B
(PATH) 中使用的环境变量。这可能吗,我该怎么做?
到目前为止,我已经在 Dockerfile.A
中尝试了以下操作:
-
RUN export PATH=/my/new/dir:$PATH
-
ENV PATH=/my/new/dir:$PATH
-
RUN echo "PATH=/my/new/dir:$PATH" >/etc/profile
和Dockerfile.B
中分别是:
只需使用路径中的工具查看它们是否可用(它们不可用)
-
ENV PATH
-
RUN source /etc/profile
我意识到每个 运行 命令都在它自己的环境中执行,这可能就是 ENV 关键字存在的原因,以便可以独立于 运行 命令处理环境。但我不确定这对我的情况意味着什么。
那我该怎么做呢?
对我来说工作正常。
Dockerfile.A
FROM alpine:3.6
ENV TEST=VALUE
建造它。
docker build -t imageA .
Dockerfile.B
FROM imageA
CMD echo $TEST
建造它。
$ docker build -t imageB .
运行它
$ docker run -it imageB
VALUE