我有一个在docker容器内运行的应用程序。首先构建映像,然后运行容器。我的运行命令是:
docker run --rm -it -e MODE=custom -e Station=RT -e StartDateReport=2022-09-10 -e Period=1 my-image:1.0.0
我声明变量MODE, Station, StartDateReport and Period
为环境变量。当我从容器启动终端并输入echo $MODE
时,我将得到正确的值custom
。
到目前为止,很好,但我有兴趣在bash script
中使用这些变量。例如在start.sh
中,我有以下代码:
#!/bin/bash
if [[ $MODE == custom ]]; then
// do sth
fi
,这里在脚本中我的变量MODE
是undefined
,因此我得到错误的结果。
编辑
如下面的注释所述,我的应用程序是基于cronjob开始运行的。
我设法自己解决了这个问题,答案在评论中。
在您的环境中,您的变量定义是否具有
形式export MODE="custom"
修改后的脚本版本:
#!/bin/bash
test -z "${MODE}" && ( echo -e "nt MODE was not exported from calling environment.n" ; exit 1 )
if [[ $MODE == custom ]]
then
#// do sth
echo "do sth"
fi
我找到了这个问题的解决方案,所以我将在这里发布答案,以帮助其他有同样问题的人。我在这里找到了解决方案:如何在容器
中加载Docker环境变量我在start.sh
中包含了export xargs --null --max-args=1 echo < /proc/1/environ
因此,start.sh
将是:
#!/bin/bash
export xargs --null --max-args=1 echo < /proc/1/environ
if [[ $MODE == custom ]]; then
// do sth
fi