在Bash脚本中使用Dockerfile中的环境变量

在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

我有一个非常简单的RedisBash脚本,它将一些默认值加载到Redis中,以便在我的应用程序启动时在docker容器中运行

我想在bash脚本中获得一个ENV变量,每次我运行容器并检查日志时,它都会说找不到set环境变量

我的bash脚本只是

#!/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脚本没有更新,所以我无法打印变量。谢谢你的帮助