簡體   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