Unset переменная окружения в compose - PullRequest
0 голосов
/ 09 октября 2018

У меня есть Dockerfile, для которого требуются две переменные окружения:

ARG AWS_ACCESS_KEY_ID
ARG AWS_SECRET_ACCESS_KEY

Я передаю их с хоста через файл compose, используя:

build:
  # ...
  args:
    - AWS_ACCESS_KEY_ID
    - AWS_SECRET_ACCESS_KEY

Моя проблема в том, что вВ некоторых потоках есть набор ролей IAM (и нет переменных env), и я не хочу использовать переменные среды.Но даже если они не существуют на хосте, им кажется, что во время процесса сборки они устанавливают пустые строки.

Я пробовал это:

run if [ -z "$AWS_ACCESS_KEY_ID" ]; then unset AWS_ACCESS_KEY_ID; fi
run if [ -z "$AWS_SECRET_ACCESS_KEY" ]; then unset AWS_SECRET_ACCESS_KEY; fi

run env # see if set

Но это не такработать (переменные по-прежнему установлены, даже если они не установлены в хосте env).

Я бы приветствовал другое решение по смешиванию переменных env и ролей IAM при создании докеров.

1 Ответ

0 голосов
/ 09 октября 2018

Разные run в Dockerfile не влияют друг на друга, чтобы ставить свои цели, предлагают объединить их в один run, что-то вроде следующего, К вашему сведению:

run if [ -z "$AWS_ACCESS_KEY_ID" ]; then unset AWS_ACCESS_KEY_ID; fi && \
  if [ -z "$AWS_SECRET_ACCESS_KEY" ]; then unset AWS_SECRET_ACCESS_KEY; fi && \
  env

Тогда вы будетеfind no AWS_ACCESS_KEY_ID было установлено пустое значение в env.

И, при попытке, предложите использовать docker-compose build --no-cache для проверки.

Наконец, почему вы видите пустое значение?

Я провел эксперимент. Кажется, если в Dockerfile не установлено ENV, в HOST нет env for this variable set, ARG в Dockerfile автоматически изменится на one ENV variable при сборке докера,так как ARG не установил значение, значит, оно пустое.

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