#docker #environment-variables #go-cd
#docker #переменные среды #go-cd
Вопрос:
У нас есть контейнер docker, и программа, которая выполняется внутри, ожидает, что будет установлено несколько переменных envvar. Есть несколько способов сделать это, и мне было любопытно, каков правильный способ:
1- поместите envvars в репозиторий конфигурации, добавьте его в качестве материала, используйте флаг docker —env-file для передачи файла. Недостатки: кажется излишним передавать 10 envvars.
2- определите envvars на вкладке конфигурация задания. Экспортируйте их во время сборки docker. Недостатки: для каждого нового задания пришлось бы вручную устанавливать envvars, добавление envvar потребовало бы изменения всех заданий в одном месте.
3- определите envvars на вкладке конфигурация задания. Передавайте их во время запуска docker, используя флаг -e. Недостатки: для каждого нового задания пришлось бы вручную устанавливать envvars, добавление envvar потребовало бы изменения каждого задания в двух местах.
Есть ли какой-либо другой способ?
Ответ №1:
Есть еще один вариант: напишите небольшой сценарий оболочки, который передает все переменные среды docker
, которые начинаются с определенного префикса.
Например, вы могли бы заставить его превратить DOCKER_A=a
и DOCKER_B=b
в -e A=a -e B=b
и вызвать его как
docker $(./munge_env_vars) ...
Тогда вы сможете поместить все свои переменные среды в одно место (либо в конфигурацию GoCD, либо в сценарий оболочки под управлением версиями, который вы можете source
), и вам не нужно изменять два места при добавлении другой переменной env.