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,但这对这里没有太大帮助。
我可以想到两个低挂选项:
- 使用
RUN
计算您正在使用的表达式,并将带有结果的 export
指令附加到适当的 shell 启动脚本(例如,/etc/profile
(或者最好是 /etc/profile.d
)) 下的单独文件
- 在
Dockerfile
中使用 ARG MYARG
并提供格式正确的版本作为 --build-arg
并使用 ENV ABC_VER=${MYARG}
.
可能是个非常简单的问题,但我找不到解决方案。 我有一些环境变量存储一些版本号。 此时只有 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,但这对这里没有太大帮助。
我可以想到两个低挂选项:
- 使用
RUN
计算您正在使用的表达式,并将带有结果的export
指令附加到适当的 shell 启动脚本(例如,/etc/profile
(或者最好是/etc/profile.d
)) 下的单独文件
- 在
Dockerfile
中使用ARG MYARG
并提供格式正确的版本作为--build-arg
并使用ENV ABC_VER=${MYARG}
.