Создание образа Docker с настроенной версией пакета узла - PullRequest
1 голос
/ 02 апреля 2020

Я хочу создать Docker образ, который содержит установленный пакет узла. Если версия пакета отсутствует или жестко задана в Dockerfile, все в порядке (@14.0.0):

FROM stefanscherer/node-windows:12.16.1-nanoserver-1909
RUN npm install -g @sitecore-jss/sitecore-jss-cli@14.0.0

Команда построения и результат:

docker build -t sitecore-jss-cli:14.0.0-nanoserver-1909 .

Successfully built 1c0ebbcd5be2
Successfully tagged sitecore-jss-cli:14.0.0-nanoserver-1909

Но когда версия передается в качестве аргумента (для возможности построения любой версии), возникает ошибка. Пожалуйста, взгляните на обновленную Dockerfile:

ARG SITECOREJSS_VERSION
FROM stefanscherer/node-windows:12.16.1-nanoserver-1909
RUN npm install -g @sitecore-jss/sitecore-jss-cli@${SITECOREJSS_VERSION}

Команда с аргументом и ошибкой:

docker build --build-arg SITECOREJSS_VERSION=14.0.0 -t sitecore-jss-cli:14.0.0-nanoserver-1909 .

...
npm ERR! code EINVALIDTAGNAME
npm ERR! Invalid tag name "${SITECOREJSS_VERSION}": Tags may not have any characters that encodeURIComponent encodes.

Похоже на необходимость аргумента чтобы избежать каким-либо образом. Любая подсказка, как это исправить?

1 Ответ

2 голосов
/ 02 апреля 2020

У вас есть две проблемы:

  1. Заказ

    ARG за пределами блок FROM доступно только в самой строке FROM. В этом случае, поскольку вам не нужно использовать --build-arg как часть FROM, переместите его внутрь:

    FROM stefanscherer/node-windows:12.16.1-nanoserver-1909
    ARG SITECOREJSS_VERSION
    ...
    

    Если вам нужно использовать его в FROM и где-нибудь в Dockerfile, вам необходимо четко указать это:

    ARG SITECOREJSS_VERSION
    FROM ...
    ARG SITECOREJSS_VERSION
    ...
    
  2. Интерполяция

    За this проблема на GitHub , если вы хотите сделать интерполяцию в командах в Windows изображениях, вам нужно использовать %:

    RUN npm install -g @sitecore-jss/sitecore-jss-cli@%SITECOREJSS_VERSION%
    

Итак, полная рабочая версия будет:

FROM stefanscherer/node-windows:12.16.1-nanoserver-1909
ARG SITECOREJSS_VERSION
RUN npm install -g @sitecore-jss/sitecore-jss-cli@%SITECOREJSS_VERSION%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...