如何使用来自父 Docker 文件的环境变量?

How to use environment variable from parent Docker file?

我有两个 Dockerfile Dockerfile.ADockerfile.B,其中 Dockerfile.B 使用 FROM 关键字从 Dockerfile.A 继承。在 Dockerfile.A 中,我设置了一个我想在 Dockerfile.B (PATH) 中使用的环境变量。这可能吗,我该怎么做?


到目前为止,我已经在 Dockerfile.A 中尝试了以下操作:

  1. RUN export PATH=/my/new/dir:$PATH
    
  2. ENV PATH=/my/new/dir:$PATH
    
  3. RUN echo "PATH=/my/new/dir:$PATH" >/etc/profile
    

Dockerfile.B中分别是:

  1. 只需使用路径中的工具查看它们是否可用(它们不可用)

  2. ENV PATH
    
  3. 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