Требовать, чтобы переменные среды передавались изображению при запуске с помощью `-e` - PullRequest
1 голос
/ 16 октября 2019

У меня есть изображение контейнера, для работы которого требуется установить переменную окружения. Но если запустить с -d, если контейнер не отслеживается, человек, управляющий контейнером, не заметит, что чего-то не хватает. Есть ли способ, которым docker [container] run проверяет, что переменная среды передается контейнеру перед его запуском.

1 Ответ

0 голосов
/ 16 октября 2019

В режиме отсоединения невозможно напечатать сообщение, которое требуется env, на ваше слово при работе с -d, но вы можете попробовать обходной путь:

Dockerfile

FROM alpine
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]

entrypoint.sh

#!/bin/sh
echo "starting container $hostname"
if [ -z "$REQUIRED_ENV" ]; then
  echo "Container failed to start, pls pass -e REQUIRED_ENV=sometest"
  exit 1
fi
echo "starting container with $REQUIRED_ENV"
#your long-running command from CMD
exec "$@"

Поэтому при запуске с

docker run -it --name envtest  --rm env-test-image 

он выйдет с сообщением

starting container 
Container failed to start, pls pass -e REQUIRED_ENV=sometest

Обходной путь с режимом отсоединения

docker run -it --name envtest  -d --rm env-test-image && docker logs envtest
...