在 Dockerfile 中设置 ENV 变量的默认值

问题描述 投票:0回答:1

我有一个自定义基础映像,在构建过程中我设置了一些环境变量,这样:

基础镜像的Dockerfile

FROM oraclelinux:7-slim
...
ENV JAVA_HOME=/usr/java/jdk-8
...

然后我使用这个 docker 镜像作为另一个镜像的基础镜像。 在子图像中,我使用这些预先配置的变量,一切正常。

但是代码质量检查器正确地抱怨子图像中缺少声明并显示警告。该警告是正确的,因为代码质量检查器看不到此变量是在父图像中定义的。

子镜像的Dockerfile:

FROM my-base-image:1.0.0
...
RUN $JAVA_HOME/bin/java ...

如果未设置(在父图像中),是否有任何好的方法可以在图像构建期间为

Dockerfile
中的变量分配默认值?

我正在寻找与 bash 类似的东西:

JAVA_HOME="${1:-$DEFAULT_VALUE}"

像这样,当然,这在

Dockerfile
中不起作用:
ENV JAVA_HOME="${this:-"default-value"}"

我知道我可以使用

*.env
文件并在那里设置默认值,并且我还可以在
docker-compose.yml
文件中定义默认值。

但我的问题与此无关。 我的问题与用例有关,其中

ENV
,例如
ENV JAVA_HOME="..."
在父图像中定义。

java docker
1个回答
0
投票

也许类似

FROM my-base-image:1.0.0
ARG JAVA_HOME=/usr/java/jdk-8
...
RUN $JAVA_HOME/bin/java ...
© www.soinside.com 2019 - 2024. All rights reserved.