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

时间:2020-04-21 09:20:49

标签: bash docker

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

我想在每次运行容器并检查日志说它找不到设置的环境变量时,在传递到Dockerfile的bash脚本中获取ENV变量。

我的bash脚本只是

context = {"rfiid": kwargs.get('rfiid')}
serializer = BlaBlaSerializer(data=data, context=context)

我尝试并为该值设置默认值的Dockerfile的片段

#!/usr/bin/env bash
redis-server --daemonize yes && sleep 1

if [ "$ENVIRONMENT_VAR" = "found" ]; then
    echo "found environment var"
fi

我正在传递的Docker-Compose

ENV ENVIRONMENT_VAR notfound

CMD ["sh", "redis.sh"]

在bash脚本中使用ENV值是否需要做些特殊的事情?

1 个答案:

答案 0 :(得分:1)

您正在做的事情对我来说完全不错。如果您错过了某些东西,我已经实施了您要完成的工作。 首先让我们从dockerfile开始

From redis:alpine
WORKDIR /usr/app
ENV ENVIRONMENT_VAR notfound
COPY . .
CMD sh ./start.sh

这里我使用redis图像作为开始,声明环境变量,将脚本复制到容器中并启动它。

第二个docker-compose也应该与您的实现类似

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_VAR 来调试它。

相关问题