首页 > 解决方案 > dockerfile 中 ENV 变量中的点不起作用

问题描述

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

  framework.config.location 

Dockerfile

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

RUN echo $framework.config.location && \
    cd $framework.config.location

.config.location

/bin/sh: 1: cd: 不能 cd 到 .config.location

标签: docker

解决方案


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

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

env framework.config.location=$HOME/framework/config TheCommand

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


推荐阅读