Использовать переменную окружения из Dockerfile в скрипте Bash - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть действительно простой скрипт Redis bash, который загружает некоторые значения по умолчанию в Redis для запуска моего приложения в контейнере docker.

Я хочу получить переменную ENV в сценарии bash, передаваемую в мой Dockerfile, каждый раз, когда я запускаю контейнер и проверяю журналы, в которых говорится, что он не может найти заданную среду 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 -Создать я ' м проходящий

environment:
  - ENVIRONMENT_VAR=found

Есть ли что-то особенное, что мне нужно сделать, чтобы использовать значение ENV в моем сценарии bash?

1 Ответ

1 голос
/ 21 апреля 2020

То, что вы делаете, выглядит совершенно нормально для меня. Я реализовал то, что вы пытаетесь выполнить sh на случай, если вы что-то пропустили. Сначала давайте начнем с файла 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 , вы найдете найдено окружение var вы пытаетесь напечатать

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...