Dockerfile - 获取、修改和设置环境变量

Dockerfile - get, modify and set env variable

可能是个非常简单的问题,但我找不到解决方案。 我有一些环境变量存储一些版本号。 此时只有 11.1.1。 我需要修改它以获得 11.1 并保存到 env ABC_VER。 所以可以在像下面这样构建我的容器之后这样做:

export ABC=$(echo $ABC_VERSION | head -c 4)

我试图在我的 dockerfile 中做同样的事情:

ENV ABC_VER $(echo $ABC_VERSION | head -c 4)

但是在构建之后 运行 echo $ABC_VER 我得到了:

$(echo 11.1.1 | head -c 4)

而不是 11.1

不确定,如何解决?

Docker 的 ENV 指令在这个意义上有点受限。据我所知,您可以做的最高级的事情是 environment replacement,但这对这里没有太大帮助。

我可以想到两个低挂选项:

  1. 使用 RUN 计算您正在使用的表达式,并将带有结果的 export 指令附加到适当的 shell 启动脚本(例如,/etc/profile (或者最好是 /etc/profile.d))
  2. 下的单独文件
  3. Dockerfile 中使用 ARG MYARG 并提供格式正确的版本作为 --build-arg 并使用 ENV ABC_VER=${MYARG}.