Как я могу установить NPM на контейнер Linux Docker - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь настроить контейнер Docker на базе Linux для запуска веб-приложения Angular, как описано в этом вопросе (предупреждение: долго!).Я дошел до того, что установил, что проблема, с которой я столкнулся, связана с тем, что попытка установить NPM как часть настройки контейнера Docker не удалась.

Когда я bashв контейнер и запустите команду, которая предназначена для этого:

wget -O- https://deb.nodesource.com/setup_6.x

... Я получаю ошибку:

ОШИБКА: сертификат 'deb.nodesource.com 'не является доверенным.

ОШИБКА: у сертификата deb.nodesource.com нет известного эмитента.

Я бы хотел иметь возможность сортировки что выдает правильный путь, но сейчас я просто добавляю --no-check-certificate к команде, которая обходит эту проблему.

Теперь у меня есть другая ошибка, когда я передаю этот сценарий установки вbash:

Ваш дистрибутив, обозначенный как "stretch", в настоящее время не поддерживается, пожалуйста, свяжитесь с NodeSource по https://github.com/nodesource/distributions/issues, если вы считаете, что это неправильно или хотите, чтобы ваш дистрибутив былрассматривается для поддержки

Перейдя по ссылке в этом сообщении, яувидеть кучу вопросов, только некоторые из которых связаны между собой.Тем не менее, немного дополнительного поиска в Google привел меня к FAQ , который, в свою очередь, указал мне на выпуск № 9 , который ... имеет множество людей, которые принимают разные решения, иссылки на другие вопросы.: - (

Основное предложение, по-видимому, заключается в использовании sudo -E следующим образом:

wget -qO- https://deb.nodesource.com/setup_6.x | sudo -E bash -

... но у меня нет sudo.: - (

ОБНОВЛЕНИЕ : Я думаю, что первая проблема с wget и вторая проблема имеют одну и ту же основную причину. Сценарий установки Node делает curl для какого-то URL, чтобы проверить, нахожусь ли я наподдерживаемая версия, и это также происходит сбой из-за проблем с сертификатом HTTPS.

Если я сделаю это:

curl -L https://deb.nodesource.com/setup

... тогда я получу эту ошибку:

Проблема с сертификатом SSL: самозаверяющий сертификат в цепочке сертификатов

..., который я могу исправить, если добавлю флаг --insecure. Но я думаю, что мне нужно исправить проблему с сертификатом перед узломСценарий установки будет работать.

Есть идеи, как мне это сделать? (Может быть, это должен быть другой вопрос?).

1 Ответ

0 голосов
/ 28 января 2019

Вы должны быть в состоянии решить проблему с сертификатом, установив ca-Certificates, перед запуском сценария установки узла.Вероятно, вам также понадобится gnupg для проверки загруженной версии узла.

Пример (при условии, что у вас есть образ на основе растяжения debian):

RUN apt-get update && \
    apt-get install -y ca-certificates gnupg curl wget --no-install-recommends && \
    rm -rf /var/lib/apt/lists/*
RUN <your node setup>

Однако вы можете просто использоватькоманда, которая используется в официальном узле image .Также я бы предпочел это над сценарием установки, который извлекается откуда-то во время сборки образа (и который может меняться между сборками).Непосредственное выполнение загруженных сценариев также не является лучшей практикой безопасности.

ENV NODE_VERSION 6.16.0

RUN buildDeps='xz-utils' \
    && ARCH= && dpkgArch="$(dpkg --print-architecture)" \
    && case "${dpkgArch##*-}" in \
      amd64) ARCH='x64';; \
      ppc64el) ARCH='ppc64le';; \
      s390x) ARCH='s390x';; \
      arm64) ARCH='arm64';; \
      armhf) ARCH='armv7l';; \
      i386) ARCH='x86';; \
      *) echo "unsupported architecture"; exit 1 ;; \
    esac \
    && set -ex \
    && apt-get update && apt-get install -y ca-certificates curl wget gnupg dirmngr $buildDeps --no-install-recommends \
    && rm -rf /var/lib/apt/lists/* \
    && for key in \
      94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
      FD3A5288F042B6850C66B31F09FE44734EB7990E \
      71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
      DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
      C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
      B9AE9905FFD7803F25714661B63B535A4C206CA9 \
      77984A986EBC2AA786BC0F66B01FBB92821C587A \
      8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \
      4ED778F539E3634C779C87C6D7062848A1AB005C \
      A48C2BEE680E841632CD4E44F07496B3EB3C1762 \
      B9E2F5981AA6E0CD28160D9FF13993A75599653C \
    ; do \
      gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
      gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
      gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
    done \
    && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \
    && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
    && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
    && grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
    && tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
    && rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
    && apt-get purge -y --auto-remove $buildDeps \
    && ln -s /usr/local/bin/node /usr/local/bin/nodejs
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...