在Bash脚本中使用Dockerfile中的环境变量
我有一个非常简单的RedisBash脚本,它将一些默认值加载到Redis中,以便在我的应用程序启动时在docker容器中运行 我想在bash脚本中获得一个ENV变量,每次我运行容器并检查日志时,它都会说找不到set环境变量 我的bash脚本只是在Bash脚本中使用Dockerfile中的环境变量,bash,docker,Bash,Docker,我有一个非常简单的RedisBash脚本,它将一些默认值加载到Redis中,以便在我的应用程序启动时在docker容器中运行 我想在bash脚本中获得一个ENV变量,每次我运行容器并检查日志时,它都会说找不到set环境变量 我的bash脚本只是 #!/usr/bin/env bash redis-server --daemonize yes && sleep 1 if [ "$ENVIRONMENT_VAR" = "found" ]; then echo "found
#!/usr/bin/env bash
redis-server --daemonize yes && sleep 1
if [ "$ENVIRONMENT_VAR" = "found" ]; then
echo "found environment var"
fi
Dockerfile的一个片段,我尝试在其中为该值设置默认值
ENV ENVIRONMENT_VAR notfound
CMD ["sh", "redis.sh"]
还有我的码头工人,我路过
environment:
- ENVIRONMENT_VAR=found
要在bash脚本中使用ENV值,我需要做一些特殊的事情吗?我觉得您所做的一切都很好。如果你错过了什么,我已经实现了你想要实现的目标。 首先让我们从dockerfile开始
From redis:alpine
WORKDIR /usr/app
ENV ENVIRONMENT_VAR notfound
COPY . .
CMD sh ./start.sh
在这里,我首先使用一个redis映像,声明环境变量,将脚本复制到容器中并启动它
其次,docker编写的代码也应该与您的实现类似
version: '3.2'
services:
redis:
container_name: 'redis-test'
build: .
environment:
- ENVIRONMENT_VAR=found
restart: always
如果使用docker compose up命令查看输出
您将找到您试图打印的查找环境变量
redis-test | 7:C 21 Apr 2020 10:30:14.247 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis-test | 7:C 21 Apr 2020 10:30:14.247 # Redis version=5.0.9, bits=64, commit=00000000, modified=0, pid=7, just started
redis-test | 7:C 21 Apr 2020 10:30:14.247 # Configuration loaded
redis-test | found environment var
您还可以通过在容器中echo$ENVIRONMENT\u VAR来调试它,就像@David Maze提到的那样。如果您
echo$ENVIRONMENT\u VAR
,它的值是什么?您是对的,它被拉过了,.sh脚本没有更新,所以我无法打印变量。谢谢你的帮助