在Dockerfile中,引用环境变量时需要使用大括号。这是因为在Dockerfile内部,解析变量时会按照下划线和数字等字符的规则不断读取,直到遇到非合法字符才停止。这就导致如果不使用大括号来引用环境变量的话,可能会造成变量解析出错。
例如:
ENV MY_VAR=hello
CMD echo $MY_VAR_world
上面的代码片段中,\(MY_VAR_world 实际上会被解析成 \)MY_VAR _world,即 hello_world,而不是期望的 hello_world。为了避免这种情况,我们可以使用大括号来明确变量的范围:
CMD echo ${MY_VAR}_world
这样就能正确地输出 hello_world 了。