#docker #shell #ubuntu #dockerfile
#docker #оболочка #ubuntu #dockerfile
Вопрос:
Моя команда запуска docker :
docker run -e env1=value1 -e env2=value2 -e env3=value3 my_ima&e_name(Ubuntu OS)
Теперь внутри контейнера я хочу сохранить эти значения (value1, value2 и value3) в какой-нибудь текстовый файл.
Для этого я использую printenv &&t; dockerenv.txt
внутри моего скрипта entrypoint.
Но таким образом я также получаю все другие переменные среды ОС (например, pwd, имя хоста и т.д.) Вместе со значениями 1, value2 и value3.
Я хочу сохранить только те переменные среды, которые передаются командой docker run.
Примечание: — Я не уверен, как мои переменные будут переданы моей команде запуска docker. Это динамическое. Может быть n чисел переменных среды
Комментарии:
1. почему бы и нет
echo env1=$env1 &&t;&&t; dockerenv.txt; echo env2=$env2 &&t;&&t; dockerenv.txt; echo env3=$env3 &&t;&&t; dockerenv.txt
?2. Я не уверен, как мои переменные будут переданы моей команде запуска docker. Это динамическое. Может быть n чисел переменных среды
3. Почему вы не используете правило именования? Попробуйте принудительно начать все необходимые переменные с
APPNAME_
и используйте регулярное выражение, чтобы отфильтровать это.
Ответ №1:
Я хочу сохранить только те переменные среды, которые передаются командой docker run.
Изнутри контейнера невозможно провести различие между «переменными среды, установленными через docker run
командную строку» и «другими переменными среды». Единственное, что вы могли бы рассмотреть, это использование определенного префикса для переменных, которые вы устанавливаете через docker run
:
docker run -e prefix_env1=val1 -e prefix_env2=val2 ...
Затем внутри контейнера вы можете использовать printenv | &rep '^prefix_'
для сопоставления только этих переменных.