Могут ли переменные среды Docker использоваться в качестве динамического аргумента точки входа? - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь параметризовать мой Dockerfile, выполняющий nodeJS, чтобы можно было настраивать аргументы моей команды точки входа на docker run, чтобы я мог поддерживать один контейнерный артефакт, который можно многократно развертывать с изменениями для некоторых аргументов времени выполнения.

Я пробовал несколько разных способов, самым основным из которых является

ENV CONFIG_FILE=default.config.js

ENTRYPOINT node ... --config ${CONFIG_FILE}

Я обнаружил, что любое значение по умолчанию остается в моей команде docker run, даже если я использую -e перейти в новые значения.Например,

docker run -e CONFIG_FILE=desired.config.js

Еще одна форма Dockerfile, которую я пробовал, такова:

ENTRYPOINT node ... --config ${CONFIG_FILE:-default.config.js}

Не указывается переменная окружения с помощью директивы ENV, но используется расширение bash для указания значения по умолчаниюзначение, если несуществующий или ноль найден.Это дает мне такое же поведение, хотя.

Наконец, последнее, что я попытался, это создать файл сценария bash, содержащий ту же команду точки входа, затем ADD в контекст докера и вызвать его в моем ENTRYPOINT.И это также, кажется, дает такое же поведение.

Возможно ли то, что я пытаюсь сделать?

РЕДАКТИРОВАТЬ:

Вот минимальный докер-файл, который воспроизводит для меня это поведение:

FROM alpine

ENV CONFIG "no"

ENTRYPOINT  echo "CONFIG=${CONFIG}"

Вот команда построения:

docker build -f test.Dockerfile -t test .

Вот команда запуска, которая повторяет no несмотря на -e arg:

docker run -t test -e CONFIG=yes

Некоторые дополнительные сведения, я запускаю OSX sierra с версией Docker 18.09.2, build 6247962

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