我有一个非常简单的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值是否需要做些特殊的事情?
答案 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
您也可以通过在容器中像