Невозможно получить доступ к Docker --build-arg из команды RUN (форма exec) - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь использовать --build-arg в одном из моих операторов run, но это не удается.

Dockerfile

ARG OS_VERSION
...
RUN ["node", "./bin/installtoolchain.js", "${OS_VERSION}"]

Iсоздайте образ с помощью следующей команды:

docker build --tag installer --build-arg OS_VERSION=9 .

Сценарий не выполняется, поскольку он передает имя переменной вместо значения.

Error: Invalid toolchain configuration settings! Received: {
    "firmwareVersion": "${OS_VERSION}"
}
...

Почему не мой --build-arg используется?

1 Ответ

1 голос
/ 08 октября 2019

Docker не в состоянии расширить ваш аргумент путем разработки.

В общем, Docker рассматривает --build-args как временные переменные среды. Использование переменной среды с синтаксисом ${VARIABLE} требует расширения оболочки.

Вы явно обошли оболочку, используя форму exec команды RUN.

Если вы хотите использовать--build-arg, тогда вы должны использовать форму оболочки команды RUN.

RUN node ./bin/installtoolchain.js ${OS_VERSION}

или, если быть точным, вызывать команду из оболочки.

RUN ["bash", "-c", "node ./bin/installtoolchain.js ${OS_VERSION}"]
...