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