不幸的是你不能直接这么做
https://forums.docker.com/t/how-do-i-send-runs-output-to-env-in-dockerfile/16106/3
所以你有两个选择
开始时使用shell脚本
您可以在开始时使用shell脚本
CMD /start.sh
在你的
start.sh
你可以有这样的逻辑
if [ $X == "Y" ]; then
export X=Y
else
export X=Z
fi
创建配置文件环境变量
FROM alpine
RUN echo "export NAME=TARUN" > /etc/profile.d/myenv.sh
SHELL ["/bin/sh", "-lc"]
CMD env
当你运行它的时候
$ docker run test
HOSTNAME=d98d44fa1dc9
SHLVL=1
HOME=/root
PAGER=less
PS1=\h:\w\$
NAME=TARUN
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
CHARSET=UTF-8
注:该
SHELL ["/bin/sh", "-lc"]
在这里非常重要,否则将无法加载配置文件
注2:代替
RUN echo "export NAME=TARUN" > /etc/profile.d/myenv.sh
你也可以做一个
COPY myevn.sh /etc/profile.d/myenv.sh
并让文件出现在您的构建上下文中