Выбор ответа Middle Dockerfile и multi-stage обновлено
Секрет через ARG
Вопрос
Почему нельзя передавать токен приватного npm-реестра через ARG NPM_TOKEN и --build-arg?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Значение остаётся в истории образа (docker history); нужен RUN --mount=type=secret. Значения ARG, использованные в RUN, видны в истории сборки, а если токен записали в .npmrc, он останется в слое.
Варианты ответа
- ARG недоступен в инструкциях RUN, токен окажется пустым, и
npm ciупадёт с ошибкой 401 - Значение остаётся в истории образа (
docker history); нуженRUN --mount=type=secretправильный ответ - ARG принимает только числа и короткие строки, длинный токен будет обрезан
- build-arg отправляется в реестр вместе с манифестом образа в открытом виде
Разбор
Значения ARG, использованные в RUN, видны в истории сборки, а если токен записали в .npmrc, он останется в слое. RUN --mount=type=secret монтирует секрет только на время инструкции, в слои и историю он не попадает. ARG доступен в RUN и принимает строки. В реестр build-arg сам по себе не отправляется, но образ с историей отправляется.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.