![](/img/trans.png)
[英]Run an arbitrary command in a docker container that runs on a remote host after sourcing some environment variables from another command
[英]Docker on AWS - Environment Variables not inheriting from host to container
我有一个脚本(托管在GitHub上 ),可以执行以下操作:
$LOCALIP
为环境变量$LOCALIP
-e LOCALIP
运行所述图像,尝试将主机环境变量传递给容器(我也尝试过-e LOCALIP=$LOCALIP
但是,当我在该实例上的容器中执行echo $LOCALIP
docker exec
并运行echo $LOCALIP
它什么也不显示。 运行env
告诉我LOCALIP
在那里,但是没有反对的地方
如果我销毁容器并使用原始脚本中的完全相同的行(带有-e LOCALIP=$LOCALIP
)重制,则它可以正常工作-我需要使该过程自动化,但是,一些其他帮助将不胜感激。
本质上sudo docker run -dit -e LOCALIP -p 1099:1099 -p 50000:50000 screamingjoypad/armada-server /bin/bash
不共享主机LOCALIP
变量。
更新
从下面尝试建议,我source /etc/bash.bashrc
下行添加到脚本source /etc/bash.bashrc
但这仍然无法正常工作。 尝试在容器中echo $LOCALIP
时,我仍然一片空白...
问题是由于shell脚本的这一行:
echo "export LOCALIP=$(hostname -i)" >> /etc/bash.bashrc
执行该命令后, export
指令尚未生效。 下次登录后生效。
要使LOCALIP
环境变量立即生效,请在echo "export ...
命令之后添加以下行:
source /etc/bash.bashrc
我相信我已经解决了。 我现在正在使用AWS元数据通过脚本中的以下补充来获取私有IP地址:
sudo docker run -dit -e LOCALIP=$(curl http://169.254.169.254/latest/meta-data/local-ipv4) -p 1099:1099 -p 50000:50000 screamingjoypad/armada-server /bin/bash
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.