2017-07-07 214 views
0

我想在Docker中设置动态env变量,但不知何故它重置。 我想设置具有价值的ENV变量:在Docker中设置动态Env变量

export EC2_Region=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone) 

,所以我不能只是使用ENVDockerfile因为它的不是一成不变的。

我试着做一个init.sh并在Dockerfile中使用CMD["init.sh"]但是当我附加到docker进程时,env变量是空的。

我是码头工人,还在探索选项。

在此先感谢!

+0

我也试图取代的.bash_profile和从init.sh脚本源,但没有运气 – OneWorld

+0

是否'搬运工运行 - -build-arg'可以做你想做的事情吗? https://docs.docker.com/engine/reference/commandline/build/ – user2915097

回答

0

您可以使用ENTRYPOINT而不是CMD。

例Dockerfile:

FROM ubuntu:14.04 
COPY init.sh/
RUN chmod +x /init.sh 
ENTRYPOINT ["/init.sh"] 

init.sh:

export EC2_Region=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone) 
+0

由于某种原因不起作用。我尝试过这个。没有设置该名称的ENV变量。 – OneWorld

+0

你能否提供你的Dockerfile和init脚本。上面的Dockerfile和init脚本为我工作。 – Sreeni

+0

我可以通过在/etc/profile.d/中放置.sh脚本来使其工作,以使env变量保持不变。用你上面提到的方法,我开始的服务无法访问env变量。 – OneWorld