我可以在Dockerfile中定义"静态"环境变量ENV
,但是可以在构建时将一些值传递给这个变量吗?我正在尝试这样的东西,这不起作用:
FROM phusion/baseimage
RUN mkdir -p /foo/2016/bin && \
FOOPATH=`ls -d /foo/20*/bin` && \
export FOOPATH
ENV PATH $PATH:$FOOPATH
Run Code Online (Sandbox Code Playgroud)
当然,在实际用例中,我将运行/解压缩创建一个名称将随不同版本,日期等更改的目录,并且我希望每次目录名称更改时都避免修改Dockerfile.
编辑:由于它似乎不可能,到目前为止最好的解决方法是使用符号链接:
FROM phusion/baseimage
RUN mkdir -p /foo/2016/bin && \
FOOPATH=`ls -d /foo/20*/bin` && \
ln -s $FOOPATH /mypath
ENV PATH $PATH:/mypath
Run Code Online (Sandbox Code Playgroud)
要在构建时传递值,请使用ARG.
FROM phusion/baseimage
RUN mkdir -p /foo/2016/bin && \
FOOPATH=`ls -d /foo/20*/bin` && \
export FOOPATH
ARG FOOPATH
ENV PATH $PATH:${FOOPATH}
Run Code Online (Sandbox Code Playgroud)
然后你就可以跑了 docker build --build-arg FOOPATH=/dir -t myimage .
编辑:从你的评论,我上面的答案不会解决你的问题.Dockerfile中没有任何内容可以从run命令的输出中更新,输出不会被解析,只会保存生成的文件系统.为此,我认为您最好在运行命令中编写映像路径并从/ etc/profile或自定义入口点脚本读入.这取决于您希望如何启动容器和基本映像.
归档时间: |
|
查看次数: |
8718 次 |
最近记录: |