Dockerfile - 使用动态值定义 ENV 变量

标签 docker dynamic environment-variables

我想用动态值更新 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/

相关文章:

node.js - 从 node.js 更改终端的环境变量

java - Dockerfile maven 与 ARG

linux - 语法错误 : Multiline bash command in dockerfile RUN statement

javascript - 使用 JQuery Mobile 创建 ListView 无法正常工作

javascript - JQuery - 查找动态 ID 的值

angular - SSR 在 Angular 中获取错误的环境

docker - Windows 上 dockerfile 中本地镜像的路径

docker - 将命令添加到image.run()部分时,Docker ps命令输出为空

C - 'struct' 元素的动态数组

ruby-on-rails-3 - 在 Rails 3 应用程序中关闭 ip 欺骗检查