dockerfile 中的 ENV 变量中的点不起作用

ste*_*hew 6 docker

当我声明名称中带有点的 ENV 变量时,它们设置不正确。对于我要进行 dockerizing 的框架,需要设置此变量:

  framework.config.location 
Run Code Online (Sandbox Code Playgroud)

Dockerfile

ENV JAVA_HOME=/opt/java/jre1.8 \
framework.config.location=$HOME/framework/config 

RUN echo $framework.config.location && \
    cd $framework.config.location
Run Code Online (Sandbox Code Playgroud)

.config.位置

/bin/sh: 1: cd: 无法 cd 到 .config.location

Pie*_*lli 3

我认为framework.config.location(通常是包含点的字符串)从 bash 等 Unix shell 的角度来看不是有效的标识符。

但是,您可以在 Dockerfile 的 ENV 部分中使用它:结果类似于

env framework.config.location=$HOME/framework/config TheCommand
Run Code Online (Sandbox Code Playgroud)

但您无法通过$framework.config.locationorf访问变量的值{$framework.config.location}。您可以使用它来读取它value=$(env | grep 'framework.config.location' | cut -f 2 -d '='),然后用作$value...