Tho*_*hom 6 dynamic environment-variables docker
我想用动态值更新PATH环境变量.这是我到目前为止在Dockerfile中尝试过的:
...
ENV PATH '$(dirname $(find /opt -name "ruby" | grep -i bin)):$PATH'
...
Run Code Online (Sandbox Code Playgroud)
但导出显示该命令未被解释:
root@97287b22c251:/# export
declare -x PATH="\$(dirname \$(find /opt -name \"ruby\" | grep -i bin)):\$PATH"
Run Code Online (Sandbox Code Playgroud)
我不想硬编码这个值.有可能实现吗?
谢谢
我们不能这样做,因为这将是一个巨大的安全问题。这意味着你可以像这样运行和环境变量
ENV PATH $(rm -rf /)
Run Code Online (Sandbox Code Playgroud)
--build-arg但是,您可以在构建图像时通过(ARG)传递信息;
ARG DYNAMIC_VALUE
ENV PATH=${DYNAMIC_VALUE:-unknown}
RUN echo $PATH
Run Code Online (Sandbox Code Playgroud)
并使用以下命令构建图像:
> docker build --build-arg DYNAMIC_VALUE=$(dirname $(find /opt -name "ruby" | grep -i bin)):$PATH .
Run Code Online (Sandbox Code Playgroud)
或者,如果您想从主机上现有的环境变量复制信息;
> export DYNAMIC_VALUE=foobar
> docker build --build-arg DYNAMIC_VALUE .
Run Code Online (Sandbox Code Playgroud)
Tho*_*mas -2
不确定这样的东西是否是您正在寻找的...稍微修改一下您已经拥有的内容。我的主要问题是,您试图用这部分完成什么?:
'$(dirname $(find /opt -name "ruby" | grep -i bin)):$PATH'
部分问题可能是使用单引号和双引号导致扩展。
FROM alpine:3.4
RUN PATH_TO_ADD=$(dirname $(find /opt -name "ruby" | grep -i bin)) || echo Error locating files
ENV PATH "$PATH:$PATH_TO_ADD"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
752 次 |
| 最近记录: |