我有一个脚本(托管在GitHub上)执行以下操作:
$LOCALIP
-e LOCALIP
尝试将主机环境变量传递给容器的图像(我也尝试过-e LOCALIP=$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
但这仍然不起作用。在容器中尝试echo $LOCALIP
时,我仍然空白......
答案 0 :(得分:0)
问题在于你的shell脚本的这一行:
echo "export LOCALIP=$(hostname -i)" >> /etc/bash.bashrc
执行此命令后,export
指令尚未生效。它将在您下次登录后生效。
要使LOCALIP
环境变量立即生效,请在echo "export ...
命令后添加此行:
source /etc/bash.bashrc
答案 1 :(得分:0)
我相信我已经解决了。我现在使用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