[英]Use environment variable from Dockerfile in Bash script
I have a really simple Redis bash script that loads some default values into Redis for when my application starts, run in a docker container.
我想在传递到我的 Dockerfile 的 bash 脚本中获取 ENV var,每次我运行容器并检查它说它找不到设置的环境 var 的日志时。
我的 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"]
还有我的 Docker-Compose 我正在路过
environment:
- ENVIRONMENT_VAR=found
要在我的 bash 脚本中使用 ENV 值,我需要做些什么特别的事情吗?
你在做什么在我看来完全没问题。 我已经实现了你想要完成的事情,以防你错过了什么。 首先让我们从 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命令查看 output,您将找到您尝试打印的找到的环境变量
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来调试它,就像@David Maze 提到的那样
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.