【发布时间】:2022-11-27 13:09:44
【问题描述】:
我有一个在 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,因此我得到了错误的结果。
【问题讨论】:
-
docker 中没有什么特别之处可以改变 bash 的行为。您是否尝试过使用引号:
"$MODE" == "custom"或-eq运算符? -
你如何开始
start.sh?你在docker中启动它吗? -
我使用定时任务。 * * * * * cd /app/ && bash start.sh >> /var/log/cron.log &.我相信这是问题所在,@KamilCuk。我显然没有声明用于执行脚本的变量。
-
我不明白。那么 docker 与 cronjob 有什么关系呢?您的 docker 测试与 cronjob 有何关系?
-
我想在特定时间段运行我的应用程序。 start.sh 是起点,也是应该运行的第一件事。 * * * * * cd /app/ && bash start.sh >> /var/log/cron.log & 刚刚启动 start.sh,在这种情况下,每分钟一次。