我想用动态值更新 PATH 环境变量。到目前为止,这是我在 Dockerfile 中尝试过的:
...
ENV PATH '$(dirname $(find /opt -name "ruby" | grep -i bin)):$PATH'
...
但是导出显示该命令没有被解释:
root@97287b22c251:/# export
declare -x PATH="\$(dirname \$(find /opt -name \"ruby\" | grep -i bin)):\$PATH"
我不想硬编码这个值。有可能实现吗?
谢谢
最佳答案
我们不能这样做,因为那将是一个巨大的安全问题。这意味着您可以像这样运行和环境变量
ENV PATH $(rm -rf /)
但是,您可以在构建镜像时通过 --build-arg
(ARG) 传递信息;
ARG DYNAMIC_VALUE
ENV PATH=${DYNAMIC_VALUE:-unknown}
RUN echo $PATH
并使用以下方法构建图像:
> docker build --build-arg DYNAMIC_VALUE=$(dirname $(find /opt -name "ruby" | grep -i bin)):$PATH .
或者,如果您想从主机上的现有 env-var 复制信息;
> export DYNAMIC_VALUE=foobar
> docker build --build-arg DYNAMIC_VALUE .
关于Dockerfile - 使用动态值定义 ENV 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34859987/