Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将环境变量导出到docker映像?_Docker - Fatal编程技术网

如何将环境变量导出到docker映像?

如何将环境变量导出到docker映像?,docker,Docker,我可以用ENV在Dockerfile中定义“静态”环境变量,但是否可以在构建时向该变量传递一些值?我正在尝试这样的事情,但不起作用: FROM phusion/baseimage RUN mkdir -p /foo/2016/bin && \ FOOPATH=`ls -d /foo/20*/bin` && \ export FOOPATH ENV PATH $PATH:$FOOPATH 当然,在实际的用例中,我会运行/解包一些东西,创建一个目

我可以用
ENV
在Dockerfile中定义“静态”环境变量,但是否可以在构建时向该变量传递一些值?我正在尝试这样的事情,但不起作用:

FROM phusion/baseimage

RUN mkdir -p /foo/2016/bin && \
    FOOPATH=`ls -d /foo/20*/bin` && \
    export FOOPATH

ENV PATH $PATH:$FOOPATH
当然,在实际的用例中,我会运行/解包一些东西,创建一个目录,其名称将随着不同的版本、日期等而改变,我希望避免每次目录名称改变时都修改Dockerfile


编辑:由于似乎不可能,目前最好的解决方法是使用符号链接:

FROM phusion/baseimage

RUN mkdir -p /foo/2016/bin && \
    FOOPATH=`ls -d /foo/20*/bin` && \
    ln -s $FOOPATH /mypath

ENV PATH $PATH:/mypath

要在生成时传入值,请使用

然后可以运行
docker build--build arg FOOPATH=/dir-t myimage。



编辑:从你的评论来看,我上面的回答并不能解决你的问题。Dockerfile中没有任何内容可以通过run命令的输出进行更新,输出不会被解析,只保存生成的文件系统。为此,我认为最好使用run命令编写图像路径,并从/etc/profile或自定义入口点脚本中读取。这取决于您希望如何启动容器和基本映像。

我是否正确理解,与
ARG
--build ARG
一起使用的
FOOPATH
RUN
命令中的完全无关?那对我来说就不是解决办法了。我想导出在
RUN
中发生的某些事情的结果,我事先并不完全知道。事实上,我没有注意到您正在尝试使用RUN命令的输出。我已经更新了我的答案。
FROM phusion/baseimage

RUN mkdir -p /foo/2016/bin && \
    FOOPATH=`ls -d /foo/20*/bin` && \
    export FOOPATH

ARG FOOPATH
ENV PATH $PATH:${FOOPATH}