繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM