передача envvars в контейнеры docker в GoCD

#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.